[Patches] [ python-Patches-1355913 ] PEP 341 - Unification of try/except and try/finally
SourceForge.net
noreply at sourceforge.net
Mon Nov 14 06:17:05 CET 2005
Patches item #1355913, was opened at 2005-11-14 00:59
Message generated for change (Comment added) made by krumms
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1355913&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Core (C code)
Group: Python 2.5
Status: Open
Resolution: None
Priority: 5
Submitted By: Thomas Lee (krumms)
Assigned to: Reinhold Birkenfeld (birkenfeld)
Summary: PEP 341 - Unification of try/except and try/finally
Initial Comment:
Attached is a patch implementing PEP 341 against HEAD
in subversion.
It includes the following changes:
1. Grammar/Grammar updated as per the PEP
2. Python/ast.c wraps try/except blocks inside
try/finally blocks if it detects the extended syntax.
This patch is based heavily upon suggestions by Nick
Coghlan on python-dev.
----------------------------------------------------------------------
>Comment By: Thomas Lee (krumms)
Date: 2005-11-14 15:17
Message:
Logged In: YES
user_id=315535
Fix for the problem you encountered in the v5 patch, Nick.
All tests in the suite now pass for me, no assertion
failures when using --with-pydebug.
I was stupidly generating a TryFinally in every scenario.
This breaks down in the 'trace' unit test when no 'finally'
clause is present with the extended syntax. Oops.
Also added a little more error checking code and updated the
unit test to test nested exception handling.
I'm using a few goto statements in the "if (n_except > 0)"
branch to reduce duplication deallocating memory. If there's
any great objections to this feel free to yell & I'll
resubmit a patch without the use of goto.
Can you please verify this works for you, Nick?
----------------------------------------------------------------------
Comment By: Thomas Lee (krumms)
Date: 2005-11-14 10:02
Message:
Logged In: YES
user_id=315535
Fixed a bad assumption when parsing a try-finally. Should be
fixed now.
I'm not sure if this fixes the problem you're experiencing,
Neal. I'll have a look into it.
----------------------------------------------------------------------
Comment By: Thomas Lee (krumms)
Date: 2005-11-14 09:12
Message:
Logged In: YES
user_id=315535
Further correction of memory leaks.
'finally' and 'orelse' need to be deallocated if an error
occurs in the "if (n_except > 0)" branch.
----------------------------------------------------------------------
Comment By: Thomas Lee (krumms)
Date: 2005-11-14 09:12
Message:
Logged In: YES
user_id=315535
Further correction of memory leaks.
'finally' and 'orelse' need to be deallocated if an error
occurs in the "if (n_except > 0)" branch.
----------------------------------------------------------------------
Comment By: Neal Norwitz (nnorwitz)
Date: 2005-11-14 09:10
Message:
Logged In: YES
user_id=33168
I'm pretty sure this patch causes this problem:
python: Objects/frameobject.c:187: frame_setlineno:
Assertion `blockstack_top > 0' failed.
I'm not sure if it's just my hacked up version or the
original. Thomas, can you test your version?
----------------------------------------------------------------------
Comment By: Neal Norwitz (nnorwitz)
Date: 2005-11-14 07:27
Message:
Logged In: YES
user_id=33168
Updated patch to correct memory leaks. Put everything in
one file. Works for me.
There needs to be doc changes done too.
----------------------------------------------------------------------
Comment By: Thomas Lee (krumms)
Date: 2005-11-14 01:02
Message:
Logged In: YES
user_id=315535
Attaching a unit test checking the various different types
of exception handling syntax.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1355913&group_id=5470
More information about the Patches
mailing list