X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fnasal%2Fcodegen.c;h=d1c05ef6254808bc7abf6c20b9e4d5f7f6d44afd;hb=342de209a21c49121bb2906d7ae58ee1d5f52866;hp=492b0f207283480119f41c83138cc23d85a6386c;hpb=dd1ea541ecc4403bcea2ca8c60c03971d1f4338f;p=simgear.git diff --git a/simgear/nasal/codegen.c b/simgear/nasal/codegen.c index 492b0f20..d1c05ef6 100644 --- a/simgear/nasal/codegen.c +++ b/simgear/nasal/codegen.c @@ -233,7 +233,7 @@ static void genHashElem(struct Parser* p, struct Token* t) { if(!t || t->type == TOK_EMPTY) return; - if(t->type != TOK_COLON) + if(t->type != TOK_COLON || !LEFT(t)) naParseError(p, "bad hash/object initializer", t->line); if(LEFT(t)->type == TOK_SYMBOL) genScalarConstant(p, LEFT(t)); else if(LEFT(t)->type == TOK_LITERAL) genExpr(p, LEFT(t)); @@ -560,9 +560,10 @@ static void genAssign(struct Parser* p, struct Token* t) static void genSlice(struct Parser* p, struct Token* t) { + if(!t || t->type==TOK_EMPTY) naParseError(p, "empty slice expression", -1); if(t->type == TOK_COLON) { - genExpr(p, LEFT(t)); - genExpr(p, RIGHT(t)); + if(LEFT(t)) genExpr(p, LEFT(t)); else emit(p, OP_PUSHNIL); + if(RIGHT(t)) genExpr(p, RIGHT(t)); else emit(p, OP_PUSHNIL); emit(p, OP_SLICE2); } else { genExpr(p, t);