From 53ef10ffc787545672af4118355ba340dd6b5e7c Mon Sep 17 00:00:00 2001 From: Zeex Date: Wed, 19 Feb 2014 22:30:00 +0700 Subject: [PATCH] Fix crash when using tagof(tagname:) This fixes #18. --- source/compiler/sc3.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/compiler/sc3.c b/source/compiler/sc3.c index 1ccbeb5..c47ba8a 100644 --- a/source/compiler/sc3.c +++ b/source/compiler/sc3.c @@ -1220,6 +1220,7 @@ static int hier2(value *lval) symbol *sym; int saveresult; + sym=NULL; tok=lex(&val,&st); switch (tok) { case tINC: /* ++lval */ @@ -1392,7 +1393,7 @@ static int hier2(value *lval) return error(17,st); /* undefined symbol (symbol is in the table, but it is "used" only) */ tag=sym->tag; } /* if */ - if (sym->ident==iARRAY || sym->ident==iREFARRAY) { + if (sym!=NULL && (sym->ident==iARRAY || sym->ident==iREFARRAY)) { int level; symbol *idxsym=NULL; symbol *subsym=sym; @@ -1414,7 +1415,7 @@ static int hier2(value *lval) if (level>sym->dim.array.level+1) error(28,sym->name); /* invalid subscript */ else if (level==sym->dim.array.level+1 && idxsym!=NULL) - tag= idxsym->x.tags.index; + tag=idxsym->x.tags.index; } /* if */ exporttag(tag); clear_value(lval);