Index: trunk/src_plugins/import_gcode/gcode.tab.c =================================================================== --- trunk/src_plugins/import_gcode/gcode.tab.c (revision 833) +++ trunk/src_plugins/import_gcode/gcode.tab.c (revision 834) @@ -698,7 +698,7 @@ break; case 11: #line 76 "gcode.y" - { gcode_append(ctx, PARAM, 0); gcode_append(ctx, yystack.l_mark[-2].chr, -1); } + { gcode_append(ctx, PARAM, 0); gcode_append(ctx, yystack.l_mark[-2].chr, -1)->do_pop = 1; } break; case 12: #line 77 "gcode.y" Index: trunk/src_plugins/import_gcode/gcode.y =================================================================== --- trunk/src_plugins/import_gcode/gcode.y (revision 833) +++ trunk/src_plugins/import_gcode/gcode.y (revision 834) @@ -73,7 +73,7 @@ gcode: T_CHR '[' expr ']' { gcode_append(ctx, $1, -1); } - | T_CHR '#' expr { gcode_append(ctx, PARAM, 0); gcode_append(ctx, $1, -1); } + | T_CHR '#' expr { gcode_append(ctx, PARAM, 0); gcode_append(ctx, $1, -1)->do_pop = 1; } | T_CHR T_DEC { gcode_append(ctx, $1, $2); } | T_CHR T_NUM { gcode_append(ctx, $1, $2); } | T_CHR '-' T_NUM { gcode_append(ctx, $1, -($3)); } Index: trunk/src_plugins/import_gcode/gcode_vm.c =================================================================== --- trunk/src_plugins/import_gcode/gcode_vm.c (revision 833) +++ trunk/src_plugins/import_gcode/gcode_vm.c (revision 834) @@ -69,12 +69,14 @@ return ex; } -void gcode_append(gcode_prg_t *ctx, gcode_i_t inst, double payload) +gcode_inst_t *gcode_append(gcode_prg_t *ctx, gcode_i_t inst, double payload) { gcode_inst_t *ex = (ctx->delay == GCP_DELAY_OFF) ? gcode_append_main(ctx) : gcode_append_2nd(ctx); ex->inst = inst; ex->payload = payload; ex->lineno = ctx->line; + ex->do_pop = 0; + return ex; } void gcode_delayed(gcode_prg_t *ctx, gcode_delay_t delay) @@ -224,7 +226,7 @@ break; default: if ((i->inst >= 'A') && (i->inst <= 'Z')) { - if (i->payload == -1) + if (i->do_pop) a = pop(ctx); else a = i->payload; Index: trunk/src_plugins/import_gcode/gcode_vm.h =================================================================== --- trunk/src_plugins/import_gcode/gcode_vm.h (revision 833) +++ trunk/src_plugins/import_gcode/gcode_vm.h (revision 834) @@ -41,6 +41,7 @@ int inst; /* a letter or a T_ or gcode_i_t */ double payload; long lineno; /* in the file */ + unsigned do_pop:1; gcode_inst_t *next; }; @@ -87,7 +88,7 @@ void gcode_delayed(gcode_prg_t *ctx, gcode_delay_t delay); -void gcode_append(gcode_prg_t *ctx, gcode_i_t inst, double payload); +gcode_inst_t *gcode_append(gcode_prg_t *ctx, gcode_i_t inst, double payload); void gcode_set_lineno(gcode_prg_t *ctx, int lineno); void gcode_dump_inst(const char *prefix, gcode_inst_t *inst);