Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 89dbd97

Browse files
committed
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.
1 parent bd3e771 commit 89dbd97

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

Tools/bgen/bgen/bgenType.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,14 @@ def passInput(self, name):
233233

234234
def mkvalueArgs(self, name):
235235
return "%s, %s" % (self.new, name)
236+
237+
class OpaqueByValueStructType(OpaqueByValueType):
238+
"""Similar to OpaqueByValueType, but we also pass this to mkvalue by
239+
address, in stead of by value.
240+
"""
241+
242+
def mkvalueArgs(self, name):
243+
return "%s, &%s" % (self.new, name)
236244

237245

238246
class OpaqueArrayType(OpaqueByValueType):

Tools/bgen/bgen/macsupport.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@
4646

4747
# File System Specifications
4848
FSSpec_ptr = OpaqueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec")
49-
FSSpec = OpaqueByValueType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec")
49+
FSSpec = OpaqueByValueStructType("FSSpec", "PyMac_BuildFSSpec", "PyMac_GetFSSpec")
5050
FSRef_ptr = OpaqueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef")
51-
FSRef = OpaqueByValueType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef")
51+
FSRef = OpaqueByValueStructType("FSRef", "PyMac_BuildFSRef", "PyMac_GetFSRef")
5252

5353
# OSType and ResType: 4-byte character strings
5454
def OSTypeType(typename):

0 commit comments

Comments
 (0)