push
github
Restore state when recording __concat metamethod throws an error. Thanks to Sergey Kaplun. (cherry picked from commit 7421a1b33) Since neither `rec_cat()` nor `lj_record_ret()` restore the Lua stack, if the error is raised, it leads either to a crash in `BC_RET` or to the "unbalanced stack" assertion failure. This patch protects the `rec_mm_arith()`, which can raise an error. Its caller returns the negated error code to be rethrown in case of the caught error. Sergey Kaplun: * added the description and the test for the problem Part of tarantool/tarantool#10199 Reviewed-by: Sergey Bronnikov <sergeyb@tarantool.org> Reviewed-by: Maxim Kokryashkin <m.kokryashkin@tarantool.org> Signed-off-by: Sergey Kaplun <skaplun@tarantool.org> (cherry picked from commit 420748c99)
5695 of 6032 branches covered (94.41%)
Branch coverage included in aggregate %.
15 of 16 new or added lines in 1 file covered. (93.75%)
13 existing lines in 5 files now uncovered.21696 of 23447 relevant lines covered (92.53%)
2933791.98 hits per line