Refactor `codegen_deferred_annotations_body` to ensure `mangled` is decref'd
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
Follow-up item from this PR: https://github.com/python/cpython/pull/146443#pullrequestreview-4033013919
During error cases we may fail to decref mangled while using these ADDOP* and VISIT macros. As a result, we can extract the for loop's body into a subfunction that we check the return of and decref mangled if needed.
// NOTE: ref of mangled can be leaked on ADDOP* and VISIT macros due to early returns
// fixing would require an overhaul of these macros
CPython versions tested on:
CPython main branch
Operating systems tested on:
Windows
Linked PRs
- gh-148060
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, codegen_deferred_annotations_body zu finden und die for-Schleife mit den ADDOP*- und VISIT-Makros zu untersuchen; sieh dir anschließend zur Einordnung PR 146443 und PR 148060 an. Erledigt ist die Aufgabe, wenn der Fehlerpfad der Schleife keine beschädigten, nicht freigegebenen Objekte mehr hinterlässt und dabei das bestehende Verhalten der Codegenerierung erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100