Commit 2abf38d0 authored by Mark Florisson's avatar Mark Florisson

Pass error information as arguments to __Pyx_cdivision_warning

parent b3c46bc1
...@@ -6298,7 +6298,12 @@ class DivNode(NumBinopNode): ...@@ -6298,7 +6298,12 @@ class DivNode(NumBinopNode):
self.operand1.result(), self.operand1.result(),
self.operand2.result())) self.operand2.result()))
code.putln(code.set_error_info(self.pos)); code.putln(code.set_error_info(self.pos));
code.put("if (__Pyx_cdivision_warning()) ") code.put("if (__Pyx_cdivision_warning(%(FILENAME)s, "
"%(LINENO)s)) " % {
'FILENAME': Naming.filename_cname,
'LINENO': Naming.lineno_cname,
})
code.put_goto(code.error_label) code.put_goto(code.error_label)
code.putln("}") code.putln("}")
...@@ -8633,21 +8638,18 @@ static CYTHON_INLINE %(type)s __Pyx_mod_%(type_name)s(%(type)s a, %(type)s b) { ...@@ -8633,21 +8638,18 @@ static CYTHON_INLINE %(type)s __Pyx_mod_%(type_name)s(%(type)s a, %(type)s b) {
cdivision_warning_utility_code = UtilityCode( cdivision_warning_utility_code = UtilityCode(
proto=""" proto="""
static int __Pyx_cdivision_warning(void); /* proto */ static int __Pyx_cdivision_warning(const char *, int); /* proto */
""", """,
impl=""" impl="""
static int __Pyx_cdivision_warning(void) { static int __Pyx_cdivision_warning(const char *filename, int lineno) {
return PyErr_WarnExplicit(PyExc_RuntimeWarning, return PyErr_WarnExplicit(PyExc_RuntimeWarning,
"division with oppositely signed operands, C and Python semantics differ", "division with oppositely signed operands, C and Python semantics differ",
%(FILENAME)s, filename,
%(LINENO)s, lineno,
__Pyx_MODULE_NAME, __Pyx_MODULE_NAME,
NULL); NULL);
} }
""" % { """)
'FILENAME': Naming.filename_cname,
'LINENO': Naming.lineno_cname,
})
# from intobject.c # from intobject.c
division_overflow_test_code = UtilityCode( division_overflow_test_code = UtilityCode(
......
...@@ -1343,17 +1343,20 @@ class FuncDefNode(StatNode, BlockNode): ...@@ -1343,17 +1343,20 @@ class FuncDefNode(StatNode, BlockNode):
(self.return_type.declaration_code(Naming.retval_cname), (self.return_type.declaration_code(Naming.retval_cname),
init)) init))
tempvardecl_code = code.insertion_point() tempvardecl_code = code.insertion_point()
if not lenv.nogil:
code.put_declare_refcount_context()
self.generate_keyword_list(code) self.generate_keyword_list(code)
if profile: if profile:
code.put_trace_declarations() code.put_trace_declarations()
# ----- Extern library function declarations # ----- Extern library function declarations
lenv.generate_library_function_declarations(code) lenv.generate_library_function_declarations(code)
# ----- GIL acquisition # ----- GIL acquisition
acquire_gil = self.acquire_gil acquire_gil = self.acquire_gil
acquire_gil_for_var_decls_only = (lenv.nogil and lenv.has_with_gil_block)
# See if we need to acquire the GIL for variable declarations and
acquire_gil_for_var_decls_only = (lenv.nogil and
lenv.has_with_gil_block)
use_refnanny = not lenv.nogil or acquire_gil_for_var_decls_only use_refnanny = not lenv.nogil or acquire_gil_for_var_decls_only
...@@ -1362,6 +1365,7 @@ class FuncDefNode(StatNode, BlockNode): ...@@ -1362,6 +1365,7 @@ class FuncDefNode(StatNode, BlockNode):
# ----- set up refnanny # ----- set up refnanny
if use_refnanny: if use_refnanny:
tempvardecl_code.put_declare_refcount_context()
code.put_setup_refcount_context(self.entry.name) code.put_setup_refcount_context(self.entry.name)
# ----- Automatic lead-ins for certain special functions # ----- Automatic lead-ins for certain special functions
......
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