This is not working for me in other cases, I'll try to make equivalent
examples and then I'll come back.

On 6/6/08, Stefan Behnel <[EMAIL PROTECTED]> wrote:
>
>  Stefan Behnel wrote:
>  > Lisandro Dalcin wrote:
>  >> GCC complains about uninitialized variables when compiling the
>  >> generated C sources in some cases like the below:
>  >>
>  >> cdef int CHKERR(int ierr) except -1:
>  >>     if ierr==0: return 0
>  >>     raise RuntimeError
>  >>
>  >> cdef int obj2int(object ob) except *:
>  >>     return ob
>  >>
>  >> def foo(a):
>  >>     cdef int i = obj2int(a)
>  >>     CHKERR(i)
>  >
>  > I added that as test case under tests/run/exceptionpropagation.pyx.
>
>
> The following works for me (it's in cython-devel).
>
>  Stefan
>
>
>  # HG changeset patch
>  # User Stefan Behnel <[EMAIL PROTECTED]>
>  # Date 1212765117 -7200
>  # Node ID 7a3fa433aaf4da1c2e2f655facd8889658820e8c
>  # Parent  e92098251a9d38ef700c78bfb6ed593f685ba563
>  fix return value setting for 'except *' functions
>
>  diff -r e92098251a9d -r 7a3fa433aaf4 Cython/Compiler/Nodes.py
>  --- a/Cython/Compiler/Nodes.py  Fri Jun 06 08:31:11 2008 +0200
>  +++ b/Cython/Compiler/Nodes.py  Fri Jun 06 17:11:57 2008 +0200
>  @@ -956,6 +956,8 @@ class FuncDefNode(StatNode, BlockNode):
>              exc_check = self.caller_will_check_exceptions()
>              if err_val is not None or exc_check:
>                  code.putln('__Pyx_AddTraceback("%s");' %
>  self.entry.qualified_name)
>  +                if err_val is None and self.return_type.default_value:
>  +                    err_val = self.return_type.default_value
>                  if err_val is not None:
>                      code.putln(
>                          "%s = %s;" % (
>
>
>  _______________________________________________
>  Cython-dev mailing list
>  [email protected]
>  http://codespeak.net/mailman/listinfo/cython-dev
>


-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to