|
@@ -2731,17 +2731,17 @@ void compile_node(buffer_t *gbuf, buffer_t *buf, list_t *ctx, stack_t *lstk, lis
|
|
break;
|
|
break;
|
|
|
|
|
|
case N_UNPACK: case N_VARUNPACK: case N_LETUNPACK: {
|
|
case N_UNPACK: case N_VARUNPACK: case N_LETUNPACK: {
|
|
- NEWGID();
|
|
|
|
|
|
+ char *varname = tempvar();
|
|
|
|
|
|
- EMIT("qi_value_t *__temp%d = ", gid);
|
|
|
|
|
|
+ EMIT("qi_value_t *%s = ", varname);
|
|
compile_node(gbuf, buf, ctx, lstk, lbl, node->a);
|
|
compile_node(gbuf, buf, ctx, lstk, lbl, node->a);
|
|
EMIT(";\n");
|
|
EMIT(";\n");
|
|
|
|
|
|
for (size_t i = 0; i < node->l->length; i++)
|
|
for (size_t i = 0; i < node->l->length; i++)
|
|
if (node->tag == N_UNPACK) {
|
|
if (node->tag == N_UNPACK) {
|
|
- EMIT("qi_set(state, false, \"%s\", qi_index(state, __temp%d, qi_make_number(state, %d)));\n", node->l->data[i], gid, i);
|
|
|
|
|
|
+ EMIT("qi_set(state, false, \"%s\", qi_index(state, %s, qi_make_number(state, %d)));\n", node->l->data[i], varname, i);
|
|
} else {
|
|
} else {
|
|
- EMIT("%s(state, \"%s\", qi_index(state, __temp%d, qi_make_number(state, %d)));\n", node->tag == N_VARUNPACK? "qi_decl": "qi_decl_const", node->l->data[i], gid, i);
|
|
|
|
|
|
+ EMIT("%s(state, \"%s\", qi_index(state, %s, qi_make_number(state, %d)));\n", node->tag == N_VARUNPACK? "qi_decl": "qi_decl_const", node->l->data[i], varname, i);
|
|
}
|
|
}
|
|
} break;
|
|
} break;
|
|
|
|
|