From: Robert Bradshaw Date: Sat, 4 Jul 2009 07:59:03 +0000 (-0700) Subject: merge X-Git-Tag: 0.13.beta0~353^2~71 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=1a6cfa09ce18a2b01b803d9051d7e8e53d9a96f6;p=cython.git merge --- 1a6cfa09ce18a2b01b803d9051d7e8e53d9a96f6 diff --cc Cython/Compiler/Nodes.py index 19790c36,9d37dfbe..7b0539aa --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@@ -3386,23 -3386,22 +3386,25 @@@ class DelStatNode(StatNode) def analyse_expressions(self, env): for arg in self.args: arg.analyse_target_expression(env, None) - if arg.type.is_pyobject or (arg.type.is_ptr and arg.type.base_type.is_cpp_class): + if arg.type.is_pyobject: self.gil_check(env) + elif arg.type.is_ptr and arg.type.base_type.is_cpp_class: + pass + elif arg.type.is_cpp_class: - error(arg.pos, "Deletion of static C++ object") ++ error(arg.pos, "Deletion of non-heap C++ object") else: - error(arg.pos, "Deletion of non-Python object") + error(arg.pos, "Deletion of non-Python, non-C++ object") #arg.release_target_temp(env) - gil_message = "Deleting Python object or C++ dynamic object" + gil_message = "Deleting Python object" def generate_execution_code(self, code): for arg in self.args: if arg.type.is_pyobject: arg.generate_deletion_code(code) elif arg.type.is_ptr and arg.type.base_type.is_cpp_class: - code.putln("delete %s;" % arg.name) + arg.generate_result_code() - code.putln("delete %s" % arg.result()) ++ code.putln("delete %s;" % arg.result()) # else error reported earlier def annotate(self, code):