]> granicus.if.org Git - python/commitdiff
Kill all local variables when the frame is deallocated (moved here
authorGuido van Rossum <guido@python.org>
Fri, 14 Feb 1997 16:27:29 +0000 (16:27 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 14 Feb 1997 16:27:29 +0000 (16:27 +0000)
from ceval.c).

Wrapped a long line.

Objects/frameobject.c

index ae962e995869807e8d369e3471b2454324e50d9e..ab36e6766750b8f04868d19a5b241f5d8ef4b4d1 100644 (file)
@@ -98,6 +98,15 @@ static void
 frame_dealloc(f)
        frameobject *f;
 {
+       int i;
+       PyObject **fastlocals;
+
+       /* Kill all local variables */
+       fastlocals = f->f_localsplus;
+       for (i = f->f_nlocals; --i >= 0; ++fastlocals) {
+               XDECREF(*fastlocals);
+       }
+
        XDECREF(f->f_back);
        XDECREF(f->f_code);
        XDECREF(f->f_builtins);
@@ -168,7 +177,8 @@ newframeobject(back, code, globals, locals)
                f = free_list;
                free_list = free_list->f_back;
                if (f->f_nlocals + f->f_stacksize < extras) {
-                       f = realloc(f, sizeof(frameobject) + extras*sizeof(object *));
+                       f = realloc(f, sizeof(frameobject) +
+                                      extras*sizeof(object *));
                        if (f == NULL)
                                return (PyFrameObject *)err_nomem();
                }