From: Guido van Rossum Date: Fri, 14 Feb 1997 16:27:29 +0000 (+0000) Subject: Kill all local variables when the frame is deallocated (moved here X-Git-Tag: v1.5a1~379 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7582bfb60a7027b57d79c44a5e8531a31d1a8f2a;p=python Kill all local variables when the frame is deallocated (moved here from ceval.c). Wrapped a long line. --- diff --git a/Objects/frameobject.c b/Objects/frameobject.c index ae962e9958..ab36e67667 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -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(); }