pP |I32 |keyword |NN const char* d|I32 len|bool all_keywords
Ap |void |leave_scope |I32 base
p |void |lex_end
-p |void |lex_start |NN SV* line
+p |void |lex_start |NULLOK SV* line
Ap |void |op_null |NN OP* o
p |void |op_clear |NN OP* o
Ap |void |op_refcnt_lock
ENTER;
SAVETMPS;
- lex_start(sv_2mortal(newSVpvs("")));
+ lex_start(NULL);
SAVEGENERICSV(PL_rsfp_filters);
PL_rsfp_filters = NULL;
PERL_CALLCONV void Perl_leave_scope(pTHX_ I32 base);
PERL_CALLCONV void Perl_lex_end(pTHX);
-PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line)
- __attribute__nonnull__(pTHX_1);
-
+PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line);
PERL_CALLCONV void Perl_op_null(pTHX_ OP* o)
__attribute__nonnull__(pTHX_1);
#endif
PL_lex_inwhat = 0;
PL_sublex_info.sub_inwhat = 0;
- s = SvPV_const(line, len);
- if (SvREADONLY(line) || !len || s[len-1] != ';') {
- PL_linestr = len ? newSVsv(line) : newSVpvn(s, 0);
- if (!len || s[len-1] != ';')
+ if (line) {
+ s = SvPV_const(line, len);
+ } else {
+ len = 0;
+ }
+ if (!len) {
+ PL_linestr = newSVpvs("\n;");
+ } else if (SvREADONLY(line) || s[len-1] != ';') {
+ PL_linestr = newSVsv(line);
+ if (s[len-1] != ';')
sv_catpvs(PL_linestr, "\n;");
} else {
SvTEMP_off(line);