guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 07/08: Fix stale stack frame clearing for frame size cha


From: Andy Wingo
Subject: [Guile-commits] 07/08: Fix stale stack frame clearing for frame size change
Date: Fri, 20 Jul 2018 05:58:56 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 9b70129504954810323e1b0b6ba43eab2ff51b01
Author: Andy Wingo <address@hidden>
Date:   Thu Jul 19 13:54:55 2018 +0200

    Fix stale stack frame clearing for frame size change
    
    * libguile/vm-engine.c (return-values): Clear all 3 stack slots.  Not
      sure this is necessary though!
---
 libguile/vm-engine.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 383b4f5..e099c1d 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -545,14 +545,15 @@ VM_NAME (scm_thread *thread)
   VM_DEFINE_OP (9, return_values, "return-values", OP1 (X32))
     {
       union scm_vm_stack_element *old_fp;
+      size_t frame_size = 3;
 
       old_fp = VP->fp;
       ip = SCM_FRAME_VIRTUAL_RETURN_ADDRESS (VP->fp);
       VP->fp = SCM_FRAME_DYNAMIC_LINK (VP->fp);
 
       /* Clear stack frame.  */
-      old_fp[0].as_scm = SCM_BOOL_F;
-      old_fp[1].as_scm = SCM_BOOL_F;
+      while (frame_size--)
+        old_fp[frame_size].as_scm = SCM_BOOL_F;
 
       POP_CONTINUATION_HOOK (old_fp);
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]