◐ Shell
reader mode source ↗
Skip to content

gh-74929: Fix an extra DECREF for PEP 667 implementation#118583

Merged
gvanrossum merged 2 commits into
python:mainfrom
gaogaotiantian:fix-framelocalsproxy-setitem
May 5, 2024
Merged

gh-74929: Fix an extra DECREF for PEP 667 implementation#118583
gvanrossum merged 2 commits into
python:mainfrom
gaogaotiantian:fix-framelocalsproxy-setitem

Conversation

@gaogaotiantian

@gaogaotiantian gaogaotiantian commented May 5, 2024

Copy link
Copy Markdown
Member

In the PEP 667 implementation, when I copied the code from _PyFrame_LocalsToFast, I did not realize the value is a new reference so it was decrefed in the original code. This resulted in an extra DECREF in __setitem__. Unfortunately I did not catch it because the test cases used were all immortals.

Two test cases were added:

  • local object variable - this will trigger an assertion failure in debug mode
  • f_locals updating itself multiple times - this will crash the interpreter without the fix

@gvanrossum gvanrossum left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hide comment

Maybe you want to delete or update the comment in the test?

@gvanrossum gvanrossum enabled auto-merge (squash) May 5, 2024 02:53
@gvanrossum gvanrossum merged commit 5dd3673 into python:main May 5, 2024
@gaogaotiantian gaogaotiantian deleted the fix-framelocalsproxy-setitem branch May 5, 2024 03:36
SonicField pushed a commit to SonicField/cpython that referenced this pull request May 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants