summaryrefslogtreecommitdiff
path: root/sql/sql_yacc.yy
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_yacc.yy')
-rw-r--r--sql/sql_yacc.yy17
1 files changed, 8 insertions, 9 deletions
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 0ef389950fc..f41a8b7e979 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -2064,17 +2064,16 @@ sp_proc_stmt:
}
else
{
- uint ip= sp->instructions();
sp_instr_jump *i;
- sp_instr_hpop *ih;
- sp_instr_cpop *ic;
+ uint ip= sp->instructions();
+ uint n;
- ih= new sp_instr_hpop(ip++, ctx, 0);
- sp->push_backpatch(ih, lab);
- sp->add_instr(ih);
- ic= new sp_instr_cpop(ip++, ctx, 0);
- sp->push_backpatch(ic, lab);
- sp->add_instr(ic);
+ n= ctx->diff_handlers(lab->ctx);
+ if (n)
+ sp->add_instr(new sp_instr_hpop(ip++, ctx, n));
+ n= ctx->diff_cursors(lab->ctx);
+ if (n)
+ sp->add_instr(new sp_instr_cpop(ip++, ctx, n));
i= new sp_instr_jump(ip, ctx);
sp->push_backpatch(i, lab); /* Jumping forward */
sp->add_instr(i);