summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lexical.xs5
-rw-r--r--lib/Exporter/Lexical.pm6
2 files changed, 11 insertions, 0 deletions
diff --git a/Lexical.xs b/Lexical.xs
index 1ae3923..868c520 100644
--- a/Lexical.xs
+++ b/Lexical.xs
@@ -24,3 +24,8 @@ lexical_import(SV *name, CV *cv)
SvREFCNT_dec(PL_curpad[off]);
PL_curpad[off] = SvREFCNT_inc(cv);
LEAVE;
+
+void
+_lex_stuff(const char *str)
+ CODE:
+ lex_stuff_pv(str, 0);
diff --git a/lib/Exporter/Lexical.pm b/lib/Exporter/Lexical.pm
index d7f0ee3..8eaf1a2 100644
--- a/lib/Exporter/Lexical.pm
+++ b/lib/Exporter/Lexical.pm
@@ -29,6 +29,12 @@ sub import {
for my $export (keys %exports) {
lexical_import($export, $exports{$export});
}
+
+ # XXX there is a bug with lexical_import where the pad entry sequence
+ # numbers are incorrect when used with 'use', so the first statement
+ # after the 'use' statement doesn't see the lexical. hack around this
+ # for now by injecting a dummy statement right after the 'use'.
+ _lex_stuff(";1;");
};
{