Refactor `codegen_deferred_annotations_body` to ensure `mangled` is decref'd
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par localiser codegen_deferred_annotations_body et inspecter la boucle for utilisant les macros ADDOP* et VISIT, puis consultez les PR 146443 et PR 148060 associés pour le contexte. La tâche est terminée lorsque le chemin d’erreur de la boucle ne laisse plus d’objets endommagés non libérés, tout en préservant le comportement existant de génération de code.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- c
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100