openbsd-ports/devel/py-psyco/patches/patch-c_dispatcher_c
fgsch 97dfc4ca97 fixes some nasty bugs where psyco can delete a var too earlier; from the
cvs repo; also uses WRKDIST rather than WRKSRC and bump package ver.
2005-06-08 22:24:01 +00:00

32 lines
1.0 KiB
Plaintext

$OpenBSD: patch-c_dispatcher_c,v 1.1 2005/06/08 22:24:01 fgsch Exp $
--- c/dispatcher.c.orig Wed Dec 1 09:54:57 2004
+++ c/dispatcher.c Wed Jun 8 18:30:34 2005
@@ -3,6 +3,7 @@
#include "mergepoints.h"
#include "blockalloc.h"
#include "Python/pycompiler.h" /* for pyc_data_xxx() */
+#include "Objects/pobject.h" /* for Psyco_SafelyDeleteVar() */
#include <idispatcher.h>
@@ -1374,6 +1375,7 @@ void psyco_delete_unused_vars(PsycoObjec
for (i=0; i<limit; i++)
{
int num;
+ vinfo_t* vi;
PyObject* o1 = PyList_GET_ITEM(plist, i);
if (!PyInt_Check(o1))
break;
@@ -1382,8 +1384,9 @@ void psyco_delete_unused_vars(PsycoObjec
/* note that if psyco_delete_unused_vars() is called by
psyco_compile_code(), before any buffer is allocated,
it may not emit any code. */
- vinfo_decref(LOC_LOCALS_PLUS[num], po);
- LOC_LOCALS_PLUS[num] = psyco_vi_Zero();
+ vi = LOC_LOCALS_PLUS[num];
+ LOC_LOCALS_PLUS[num] = Psyco_SafelyDeleteVar(po, vi);
+ vinfo_decref(vi, po);
}
}