Submitted By: Randy McMurchy Date: 2005-09-09 Initial Package Version: 0.9.3 Upstream Status: Unknown Origin: http://people.redhat.com/johnp/files/pyrex-0.9.2.1-gcc4.patch Description: Modifies some of the Python code to work when compiled using GCC-4.0.x diff -Naur Pyrex-0.9.3-orig/Pyrex/Compiler/Code.py Pyrex-0.9.3/Pyrex/Compiler/Code.py --- Pyrex-0.9.3-orig/Pyrex/Compiler/Code.py 2003-07-08 08:31:27.000000000 +0000 +++ Pyrex-0.9.3/Pyrex/Compiler/Code.py 2005-09-09 17:06:00.000000000 +0000 @@ -218,14 +218,19 @@ for entry in entries: self.put_var_xdecref_clear(entry) - def put_init_to_py_none(self, cname): - self.putln("%s = Py_None; Py_INCREF(%s);" % (cname, cname)) + def put_init_to_py_none(self, cast, cname): + if cast: + self.putln("%s = Py_None; Py_INCREF(%s %s);" % (cname, cast, cname)) + else: + self.putln("%s = Py_None; Py_INCREF(%s);" % (cname, cname)) def put_init_var_to_py_none(self, entry, template = "%s"): code = template % entry.cname if entry.type.is_extension_type: - code = "((PyObject*)%s)" % code - self.put_init_to_py_none(code) + cast = "(PyObject *)" + else: + cast = None + self.put_init_to_py_none(cast, code) def put_pymethoddef(self, entry, term): if entry.doc: diff -Naur Pyrex-0.9.3-orig/Pyrex/Compiler/ExprNodes.py Pyrex-0.9.3/Pyrex/Compiler/ExprNodes.py --- Pyrex-0.9.3-orig/Pyrex/Compiler/ExprNodes.py 2004-05-01 10:15:07.000000000 +0000 +++ Pyrex-0.9.3/Pyrex/Compiler/ExprNodes.py 2005-09-09 17:06:00.000000000 +0000 @@ -806,7 +806,7 @@ if self.type.is_pyobject: rhs.make_owned_reference(code) code.put_decref(self.result, self.type) - code.putln('%s = %s;' % (self.result, rhs.result)) + code.putln('%s = %s;' % (self.entry.cname, rhs.result)) if debug_disposal_code: print "NameNode.generate_assignment_code:" print "...generating post-assignment code for", rhs diff -Naur Pyrex-0.9.3-orig/Pyrex/Compiler/Nodes.py Pyrex-0.9.3/Pyrex/Compiler/Nodes.py --- Pyrex-0.9.3-orig/Pyrex/Compiler/Nodes.py 2004-07-11 07:26:29.000000000 +0000 +++ Pyrex-0.9.3/Pyrex/Compiler/Nodes.py 2005-09-09 17:06:00.000000000 +0000 @@ -484,9 +484,9 @@ self.generate_self_cast(scope, code) type = scope.parent_type if type.vtabslot_cname: - code.putln("(struct %s *)p->%s = %s;" % ( - type.vtabstruct_cname, + code.putln("p->%s = (struct %s *)%s;" % ( type.vtabslot_cname, + type.vtabstruct_cname, type.vtabptr_cname)) for entry in scope.var_entries: if entry.type.is_pyobject: @@ -1685,10 +1685,11 @@ code.putln("") if self.return_type.is_pyobject: if self.return_type.is_extension_type: - lhs = "(PyObject *)%s" % Naming.retval_cname + cast = "(PyObject *)" else: - lhs = Naming.retval_cname - code.put_init_to_py_none(lhs) + cast = None + lhs = Naming.retval_cname + code.put_init_to_py_none(cast, lhs) else: val = self.return_type.default_value if val: