From 406c1d25ad4c0845415f97569967f59b52d0cf2e Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 4 Apr 2017 11:16:27 +0200 Subject: [PATCH] [interp] fix stack overflow on tail recursion --- mono/mini/interp/transform.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mono/mini/interp/transform.c b/mono/mini/interp/transform.c index 8c2ac6f0a50..e23969c79d1 100644 --- a/mono/mini/interp/transform.c +++ b/mono/mini/interp/transform.c @@ -811,8 +811,9 @@ interp_transform_call (TransformData *td, MonoMethod *method, MonoMethod *target int offset; if (mono_interp_traceopt) g_print ("Optimize tail call of %s.%s\n", target_method->klass->name, target_method->name); - for (i = csignature->param_count - 1; i >= 0; --i) - store_arg (td, i + csignature->hasthis); + + for (i = csignature->param_count - 1 + !!csignature->hasthis; i >= 0; --i) + store_arg (td, i); ADD_CODE(td, MINT_BR_S); offset = body_start_offset - ((td->new_ip - 1) - td->new_code); -- 2.25.1