Autovivify undefined hash reference in list assignment
Les mainteneurs répondent en général sous 1 jour
Une pull request liée a déjà été fusionnée.
- #1960 par @fglock — fusionnée
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 55/100
Piste de recherche
Start by tracing shared list assignment for a hash dereference in the PerlOnJava runtime, then compare how both the JVM and interpreter backends handle an undefined scalar against an initialized hash reference. Add a focused regression for both cases; done means the reproducer passes on both backends, including the existing initialized-reference behavior.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
List assignment into a hash dereference does not autovivify an undefined scalar on either PerlOnJava backend. This breaks pure-Perl code that initializes a hash reference with ($self, %$type) = @_ and then reads it.
Reproducer
my ($self, $type);
($self, %$type) = ('Object::Hybrid', reftype => 'HASH', tieable => 0, mutable => 0, caller => 0);
die "missing hash assignment" unless $type->{reftype} eq 'HASH';
System Perl 5.42.2 passes. PerlOnJava at master b43a65250 leaves $type undefined and the key missing on both the JVM and interpreter backends. Initializing $type to {} before the assignment makes both PerlOnJava backends pass.
CPAN evidence
Object-Hybrid 0.07 passed all 909 tests under system Perl. CPAN run 20261103-123832-91742 failed at t/Object-Hybrid.t line 21 after its first assertion, with No 'reftype' parameter specified; the same failure reproduces on both PerlOnJava backends.
Suspected runtime path
The failure is in shared list assignment to a hash dereference. The assignment replaces the pending autovivification hash before the referenced scalar becomes a hash reference. A focused regression should cover the undefined-scalar case and continue to pass when the hash reference is already initialized.
- Langage dominant
- Perl
- Étoiles
- 65
- Forks
- 8
- Merge moyen
- 5 h 57 min
- PR mergées (30 j)
- 177
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire 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.
Autres issues de fglock/PerlOnJava
-
area:runtime documentation enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
fglock/PerlOnJava#1579 ·
Les mainteneurs répondent en général sous 1 jour
-
Honor scalar context for sort returned from a subroutinePeut-être pris @fglock l’a pris aujourd’hui. Ouvertearea:runtime bug
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
fglock/PerlOnJava#1991 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area:cpan-port area:parser bug
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
fglock/PerlOnJava#1990 ·
Les mainteneurs répondent en général sous 1 jour
-
area:parser area:unicode bug
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
fglock/PerlOnJava#1989 ·
Les mainteneurs répondent en général sous 1 jour
-
area:backend bug
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
fglock/PerlOnJava#1981 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de fglock/PerlOnJava
Issues similaires
-
check_keywords.pl dies before reporting an unknown keyword categoryPeut-être pris @zhaohai666 l’a pris il y a 1 jour. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 87/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
libwww-perl/HTTP-Message#236 ·
-
1.severity: security
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
wave-followup
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100