GDBFrame.st
changeset 104 4add55336dfe
parent 103 56bf65352505
child 106 12c96f17fc53
--- a/GDBFrame.st	Thu Feb 15 08:46:03 2018 +0000
+++ b/GDBFrame.st	Sat Feb 03 22:37:17 2018 +0000
@@ -107,19 +107,32 @@
 variables
     self ensureIsValid.
     variables isNil ifTrue:[
-        variables := GDBTransientDataHolder debugger: debugger factory:[ 
-            | result |
+        variables := GDBTransientDataHolder debugger: debugger factory:[ :old |
+            | result new |
+
+            result := debugger send: (GDBMI_stack_list_variables new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: '--no-values')).
+            new := (result propertyAt: #variables) ? #().
+            old notNil ifTrue:[ 
+                self assert: old size == new size. "/ for now...
+                1 to: new size do:[:i | 
+                    | oldVar newVar |
 
-            result := debugger send: (GDBMI_stack_list_variables new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: '--simple-values')).
-            (result propertyAt: #variables) ? #()
-                do:[ :each | each setFrame: self ];
-                yourself
+                    oldVar := old at: i.
+                    newVar := new at: i.
+                    newVar name = oldVar name ifTrue:[ 
+                        new at: i put: (old at: i)
+                    ].
+                ].
+            ] ifFalse:[ 
+                new do:[:newVar | newVar setFrame: self ]
+            ].
+            new
         ].
     ].
     ^ variables value
 
     "Created: / 27-02-2015 / 14:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 17-11-2017 / 20:22:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-02-2018 / 22:02:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !GDBFrame methodsFor:'initialization'!
@@ -134,6 +147,7 @@
     level := anInteger
 
     "Created: / 15-02-2018 / 08:34:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 02-02-2018 / 12:16:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setLine: anInteger