diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-03-18 15:24:22 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-03-18 15:24:22 (GMT) |
commit | 89dbd972799c9bcb060a2bb15cade1638da42c87 (patch) | |
tree | 825c73a9605bfe3214708e66f7539a545e245143 | |
parent | bd3e771a979de04e273f735e69fb8842006137be (diff) | |
download | cpython-89dbd972799c9bcb060a2bb15cade1638da42c87.zip cpython-89dbd972799c9bcb060a2bb15cade1638da42c87.tar.gz cpython-89dbd972799c9bcb060a2bb15cade1638da42c87.tar.bz2 |
Some structures should be passed to Py_BuildValue by reference, not by value,
notably FSSpec and FSRef objects. First half of fix for #531291.
2.2.1 candidate.
-rw-r--r-- | Tools/bgen/bgen/bgenType.py | 8 | ||||
-rw-r--r-- | Tools/bgen/bgen/macsupport.py | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/Tools/bgen/bgen/bgenType.py b/Tools/bgen/bgen/bgenType.py index fa316a7..9b4f11f 100644 --- a/Tools/bgen/bgen/bgenType.py +++ b/Tools/bgen/bgen/bgenType.py @@ -233,6 +233,14 @@ class OpaqueByValueType(OpaqueType): def mkvalueArgs(self, name): return "%s, %s" % (self.new, name) + +class OpaqueByValueStructType(OpaqueByValueType): + """Similar to OpaqueByValueType, but we also pass this to mkvalue by + address, in stead of by value. + """ + + def mkvalueArgs(self, name): + return "%s, &%s" % (self.new, name) class OpaqueArrayType(OpaqueByValueType): diff --git a/Tools/bgen/bgen/macsupport.py b/Tools/bgen/bgen/macsupport.py index 2caac97..bd38f02 100644 --- a/Tools/bgen/bgen/macsupport.py +++ b/Tools/bgen/bgen/macsupport.py @@ -46,9 +46,9 @@ ConstStringPtr = StringPtr # File System Specifications FSSpec_ptr = OpaqueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec") -FSSpec = OpaqueByValueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec") +FSSpec = OpaqueByValueStructType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec") FSRef_ptr = OpaqueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef") -FSRef = OpaqueByValueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef") +FSRef = OpaqueByValueStructType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef") # OSType and ResType: 4-byte character strings def OSTypeType(typename): |