Commit fff037c3 authored by Stefan Behnel's avatar Stefan Behnel

safety fix: why should the return type always be exactly PyObject if it is known to be bool?

parent edf4cfbd
...@@ -5553,7 +5553,7 @@ class CmpNode(object): ...@@ -5553,7 +5553,7 @@ class CmpNode(object):
def generate_operation_code(self, code, result_code, def generate_operation_code(self, code, result_code,
operand1, op , operand2): operand1, op , operand2):
if self.type is PyrexTypes.py_object_type: if self.type.is_pyobject:
coerce_result = "__Pyx_PyBool_FromLong" coerce_result = "__Pyx_PyBool_FromLong"
else: else:
coerce_result = "" coerce_result = ""
...@@ -5563,7 +5563,7 @@ class CmpNode(object): ...@@ -5563,7 +5563,7 @@ class CmpNode(object):
negation = "" negation = ""
if op == 'in' or op == 'not_in': if op == 'in' or op == 'not_in':
code.globalstate.use_utility_code(contains_utility_code) code.globalstate.use_utility_code(contains_utility_code)
if self.type is PyrexTypes.py_object_type: if self.type.is_pyobject:
coerce_result = "__Pyx_PyBoolOrNull_FromLong" coerce_result = "__Pyx_PyBoolOrNull_FromLong"
if op == 'not_in': if op == 'not_in':
negation = "__Pyx_NegateNonNeg" negation = "__Pyx_NegateNonNeg"
...@@ -5577,7 +5577,7 @@ class CmpNode(object): ...@@ -5577,7 +5577,7 @@ class CmpNode(object):
method = "PyDict_Contains" method = "PyDict_Contains"
else: else:
method = "PySequence_Contains" method = "PySequence_Contains"
if self.type is PyrexTypes.py_object_type: if self.type.is_pyobject:
error_clause = code.error_goto_if_null error_clause = code.error_goto_if_null
got_ref = "__Pyx_XGOTREF(%s); " % result_code got_ref = "__Pyx_XGOTREF(%s); " % result_code
else: else:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment