From: Stefan Behnel Date: Sat, 19 Jul 2008 09:54:46 +0000 (+0200) Subject: reverted rev 809 as it currently leads to crashes X-Git-Tag: 0.9.8.1~117 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=6da89841fa0386b1fd6015fd1d93b5752a964e6c;p=cython.git reverted rev 809 as it currently leads to crashes --- diff --git a/Cython/Compiler/ExprNodes.py b/Cython/Compiler/ExprNodes.py index 0644b9fc..3ce905c8 100644 --- a/Cython/Compiler/ExprNodes.py +++ b/Cython/Compiler/ExprNodes.py @@ -1668,17 +1668,6 @@ class SimpleCallNode(CallNode): if func_type.is_ptr: func_type = func_type.base_type return func_type - - def exception_checks(self): - func_type = self.function_type() - exc_val = func_type.exception_value - exc_check = func_type.exception_check - if exc_val is None and self.function.entry.visibility != 'extern': - return_type = func_type.return_type - if not return_type.is_struct_or_union and not return_type.is_void: - exc_val = return_type.cast_code(Naming.default_error) - exc_check = 1 - return exc_val, exc_check def analyse_c_function_call(self, env): func_type = self.function_type() @@ -1721,13 +1710,12 @@ class SimpleCallNode(CallNode): "Python object cannot be passed as a varargs parameter") # Calc result type and code fragment self.type = func_type.return_type - if self.type.is_pyobject: - self.is_temp = 1 - self.result_ctype = py_object_type - else: - exc_val, exc_check = self.exception_checks() - if self.type.is_pyobject or exc_val is not None or exc_check: + if self.type.is_pyobject \ + or func_type.exception_value is not None \ + or func_type.exception_check: self.is_temp = 1 + if self.type.is_pyobject: + self.result_ctype = py_object_type # C++ exception handler if func_type.exception_check == '+': if func_type.exception_value is None: @@ -1792,7 +1780,8 @@ class SimpleCallNode(CallNode): if self.type.is_pyobject: exc_checks.append("!%s" % self.result_code) else: - exc_val, exc_check = self.exception_checks() + exc_val = func_type.exception_value + exc_check = func_type.exception_check if exc_val is not None: exc_checks.append("%s == %s" % (self.result_code, exc_val)) if exc_check: diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index b5d9a109..68394529 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -487,9 +487,6 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): code.putln("#ifndef __cdecl") code.putln(" #define __cdecl") code.putln("#endif") - code.putln(''); - code.putln('#define %s 0xB0000000B000B0BBLL' % Naming.default_error); - code.putln(''); self.generate_extern_c_macro_definition(code) code.putln("#include ") code.putln("#define %s" % Naming.api_guard_prefix + self.api_name(env)) diff --git a/Cython/Compiler/Naming.py b/Cython/Compiler/Naming.py index ec70c6e2..4296bf71 100644 --- a/Cython/Compiler/Naming.py +++ b/Cython/Compiler/Naming.py @@ -74,7 +74,6 @@ import_star = pyrex_prefix + "import_star" import_star_set = pyrex_prefix + "import_star_set" cur_scope_cname = pyrex_prefix + "cur_scope" enc_scope_cname = pyrex_prefix + "enc_scope" -default_error = pyrex_prefix + "ERROR" line_c_macro = "__LINE__" diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index d237e5c6..1964b952 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -1209,18 +1209,11 @@ class CFuncDefNode(FuncDefNode): if self.return_type.is_pyobject: return "0" else: - if self.entry.type.exception_value is not None: - return self.entry.type.exception_value - elif self.return_type.is_struct_or_union or self.return_type.is_void: - return None - else: - return self.return_type.cast_code(Naming.default_error) + #return None + return self.entry.type.exception_value def caller_will_check_exceptions(self): - if self.entry.type.exception_value is None: - return 1 - else: - return self.entry.type.exception_check + return self.entry.type.exception_check def generate_optarg_wrapper_function(self, env, code): if self.type.optional_arg_count and \