]> git.vpit.fr Git - perl/modules/autovivification.git/commit
Make sure gv ops seen by multideref are cleaned from the global table
authorVincent Pit <vince@profvince.com>
Thu, 14 May 2015 15:38:01 +0000 (17:38 +0200)
committerVincent Pit <vince@profvince.com>
Thu, 14 May 2015 15:44:30 +0000 (17:44 +0200)
commit32f02f03f98df22086b067e5e81be90c1f83d030
treec0a2fee94e65effbe20d883341a8dca1f952a1d5
parent9686b1070ec31c97d43957bad69f4bf0e70590b1
Make sure gv ops seen by multideref are cleaned from the global table

Since they are created in the peephole optimizer, multideref ops have to
rely on getting the lexical scope hints from their first kid. It might have
happened that the kid of one such op was a gv op compiled in the scope of
the pragma, and was then reused outside of the scope of the pragma again
as the first kid of another multideref op. In that case, the multideref op
was wrongly replaced. This is solved by always clearing gv ops entries in
ck_rv2xv() from the global op map.

This solves random failures of test 12 from t/40-scope.t.
autovivification.xs