Branch: Tag:

2019-04-04

2019-04-04 11:14:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix issue with mixing automap and splice.

Thanks to Chris Angelico <rosuav@gmail.com> for the report.

Fixes [LysLysKOM 23258037].

5:   \*/   /**/   #include "global.h" - RCSID("$Id: docode.c,v 1.135 2001/09/29 08:47:03 hubbe Exp $"); + RCSID("$Id$");   #include "las.h"   #include "program.h"   #include "pike_types.h"
513:    depth++;    }    emit0(F_MARK); +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    code_expression(n, 0, "[*]");    emit1(F_NUMBER, depth);    emit_apply_builtin("__builtin.automap_marker"); -  +  POP_AND_DONT_CLEANUP;    return 1;    }    }
1022:    fatal("HELP! FATAL INTERNAL COMPILER ERROR (1)\n");   #endif    +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    emit0(F_MARK); -  +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    emit0(F_MARK);    emit0(F_LTOSVAL);    emit1(F_NUMBER, depth);    emit_apply_builtin("__builtin.automap_marker"); -  +  POP_AND_DONT_CLEANUP;    emit_builtin_svalue("`+");    emit2(F_REARRANGE,1,1);    emit1(F_NUMBER, 1);    emit_apply_builtin("__automap__"); -  +  POP_AND_DONT_CLEANUP;       if(flags & DO_POP)    {
1084:    fatal("HELP! FATAL INTERNAL COMPILER ERROR (1)\n");   #endif    +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    emit0(F_MARK); -  +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    emit0(F_MARK);    emit0(F_LTOSVAL);    emit1(F_NUMBER, depth);    emit_apply_builtin("__builtin.automap_marker"); -  +  POP_AND_DONT_CLEANUP;    emit_builtin_svalue("`-");    emit2(F_REARRANGE,1,1);    emit1(F_NUMBER, 1);    emit_apply_builtin("__automap__"); -  +  POP_AND_DONT_CLEANUP;       if(flags & DO_POP)    {
2150:       case F_AUTO_MAP:    emit0(F_MARK); +  PUSH_CLEANUP_FRAME(do_pop_mark, 0);    code_expression(CAR(n), 0, "automap function");    do_encode_automap_arg_list(CDR(n),0);    emit_apply_builtin("__automap__"); -  +  POP_AND_DONT_CLEANUP;    return 1;       case F_AUTO_MAP_MARKER: