summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1996-04-12 16:26:59 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1996-04-12 16:26:59 (GMT)
commitc574b43d35e08f85843bb72938850ecd1dde7d82 (patch)
tree2f43d80d0eb72736d92150b3a285ec181a008667 /Mac
parentda6a9719940925c3a6173434d7aa55b9a69c3b4d (diff)
downloadcpython-c574b43d35e08f85843bb72938850ecd1dde7d82.zip
cpython-c574b43d35e08f85843bb72938850ecd1dde7d82.tar.gz
cpython-c574b43d35e08f85843bb72938850ecd1dde7d82.tar.bz2
Fixed a nasty bug where FindControl could return a reference to a
destroyed python object.
Diffstat (limited to 'Mac')
-rw-r--r--Mac/Modules/ctl/Ctlmodule.c2
-rw-r--r--Mac/Modules/ctl/ctlgen.py2
-rw-r--r--Mac/Modules/ctl/ctlscan.py3
-rw-r--r--Mac/Modules/ctl/ctlsupport.py4
4 files changed, 7 insertions, 4 deletions
diff --git a/Mac/Modules/ctl/Ctlmodule.c b/Mac/Modules/ctl/Ctlmodule.c
index bc690cd..33111f5 100644
--- a/Mac/Modules/ctl/Ctlmodule.c
+++ b/Mac/Modules/ctl/Ctlmodule.c
@@ -95,7 +95,7 @@ CtlObj_Convert(v, p_itself)
static void CtlObj_dealloc(self)
ControlObject *self;
{
- /* Cleanup of self->ob_itself goes here */
+ SetCRefCon(self->ob_itself, (long)0); /* Make it forget about us */
PyMem_DEL(self);
}
diff --git a/Mac/Modules/ctl/ctlgen.py b/Mac/Modules/ctl/ctlgen.py
index 451253a..eefd175 100644
--- a/Mac/Modules/ctl/ctlgen.py
+++ b/Mac/Modules/ctl/ctlgen.py
@@ -1,4 +1,4 @@
-# Generated from 'flap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Controls.h'
+# Generated from 'Sap:CW8 Gold:Metrowerks CodeWarrior:MacOS Support:Headers:Universal Headers:Controls.h'
f = Function(ControlRef, 'NewControl',
(WindowRef, 'theWindow', InMode),
diff --git a/Mac/Modules/ctl/ctlscan.py b/Mac/Modules/ctl/ctlscan.py
index e36db2c..661cbfe 100644
--- a/Mac/Modules/ctl/ctlscan.py
+++ b/Mac/Modules/ctl/ctlscan.py
@@ -3,11 +3,12 @@ import addpack
addpack.addpack(':Tools:bgen:bgen')
from scantools import Scanner
+from bgenlocations import TOOLBOXDIR
def main():
input = "Controls.h"
output = "ctlgen.py"
- defsoutput = "Controls.py"
+ defsoutput = TOOLBOXDIR + "Controls.py"
scanner = MyScanner(input, output, defsoutput)
scanner.scan()
scanner.close()
diff --git a/Mac/Modules/ctl/ctlsupport.py b/Mac/Modules/ctl/ctlsupport.py
index c87922a..cef9f8a 100644
--- a/Mac/Modules/ctl/ctlsupport.py
+++ b/Mac/Modules/ctl/ctlsupport.py
@@ -68,7 +68,9 @@ class MyObjectDefinition(GlobalObjectDefinition):
def outputInitStructMembers(self):
GlobalObjectDefinition.outputInitStructMembers(self)
Output("SetCRefCon(itself, (long)it);")
-
+ def outputCleanupStructMembers(self):
+ Output("SetCRefCon(self->ob_itself, (long)0); /* Make it forget about us */")
+
# Create the generator groups and link them
module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
object = MyObjectDefinition(OBJECTNAME, OBJECTPREFIX, OBJECTTYPE)