This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
silence warning
[perl5.git]
/
toke.c
diff --git
a/toke.c
b/toke.c
index
d95b0a7
..
641e3e3
100644
(file)
--- a/
toke.c
+++ b/
toke.c
@@
-424,8
+424,8
@@
Perl_lex_start(pTHX_ SV *line)
SAVEPPTR(PL_last_uni);
SAVEPPTR(PL_linestart);
SAVESPTR(PL_linestr);
SAVEPPTR(PL_last_uni);
SAVEPPTR(PL_linestart);
SAVESPTR(PL_linestr);
- SAVE
PPTR
(PL_lex_brackstack);
- SAVE
PPTR
(PL_lex_casestack);
+ SAVE
GENERICPV
(PL_lex_brackstack);
+ SAVE
GENERICPV
(PL_lex_casestack);
SAVEDESTRUCTOR_X(restore_rsfp, PL_rsfp);
SAVESPTR(PL_lex_stuff);
SAVEI32(PL_lex_defer);
SAVEDESTRUCTOR_X(restore_rsfp, PL_rsfp);
SAVESPTR(PL_lex_stuff);
SAVEI32(PL_lex_defer);
@@
-440,8
+440,6
@@
Perl_lex_start(pTHX_ SV *line)
PL_lex_brackets = 0;
New(899, PL_lex_brackstack, 120, char);
New(899, PL_lex_casestack, 12, char);
PL_lex_brackets = 0;
New(899, PL_lex_brackstack, 120, char);
New(899, PL_lex_casestack, 12, char);
- SAVEFREEPV(PL_lex_brackstack);
- SAVEFREEPV(PL_lex_casestack);
PL_lex_casemods = 0;
*PL_lex_casestack = '\0';
PL_lex_dojoin = 0;
PL_lex_casemods = 0;
*PL_lex_casestack = '\0';
PL_lex_dojoin = 0;
@@
-1052,8
+1050,8
@@
S_sublex_push(pTHX)
SAVEPPTR(PL_last_uni);
SAVEPPTR(PL_linestart);
SAVESPTR(PL_linestr);
SAVEPPTR(PL_last_uni);
SAVEPPTR(PL_linestart);
SAVESPTR(PL_linestr);
- SAVE
PPTR
(PL_lex_brackstack);
- SAVE
PPTR
(PL_lex_casestack);
+ SAVE
GENERICPV
(PL_lex_brackstack);
+ SAVE
GENERICPV
(PL_lex_casestack);
PL_linestr = PL_lex_stuff;
PL_lex_stuff = Nullsv;
PL_linestr = PL_lex_stuff;
PL_lex_stuff = Nullsv;
@@
-1068,8
+1066,6
@@
S_sublex_push(pTHX)
PL_lex_brackets = 0;
New(899, PL_lex_brackstack, 120, char);
New(899, PL_lex_casestack, 12, char);
PL_lex_brackets = 0;
New(899, PL_lex_brackstack, 120, char);
New(899, PL_lex_casestack, 12, char);
- SAVEFREEPV(PL_lex_brackstack);
- SAVEFREEPV(PL_lex_casestack);
PL_lex_casemods = 0;
*PL_lex_casestack = '\0';
PL_lex_starts = 0;
PL_lex_casemods = 0;
*PL_lex_casestack = '\0';
PL_lex_starts = 0;
@@
-1611,7
+1607,7
@@
S_scan_const(pTHX_ char *start)
/* \c is a control character */
case 'c':
s++;
/* \c is a control character */
case 'c':
s++;
- {
+
if (s < send)
{
U8 c = *s++;
#ifdef EBCDIC
if (isLOWER(c))
U8 c = *s++;
#ifdef EBCDIC
if (isLOWER(c))
@@
-1619,6
+1615,9
@@
S_scan_const(pTHX_ char *start)
#endif
*d++ = NATIVE_TO_NEED(has_utf8,toCTRL(c));
}
#endif
*d++ = NATIVE_TO_NEED(has_utf8,toCTRL(c));
}
+ else {
+ yyerror("Missing control char name in \\c");
+ }
continue;
/* printf-style backslashes, formfeeds, newlines, etc */
continue;
/* printf-style backslashes, formfeeds, newlines, etc */
@@
-2205,6
+2204,7
@@
Perl_yylex(pTHX)
GV *gv = Nullgv;
GV **gvp = 0;
bool bof = FALSE;
GV *gv = Nullgv;
GV **gvp = 0;
bool bof = FALSE;
+ I32 orig_keyword = 0;
/* check if there's an identifier for us to look at */
if (PL_pending_ident)
/* check if there's an identifier for us to look at */
if (PL_pending_ident)
@@
-2275,11
+2275,7
@@
Perl_yylex(pTHX)
return ')';
}
if (PL_lex_casemods > 10) {
return ')';
}
if (PL_lex_casemods > 10) {
- char* newlb = Renew(PL_lex_casestack, PL_lex_casemods + 2, char);
- if (newlb != PL_lex_casestack) {
- SAVEFREEPV(newlb);
- PL_lex_casestack = newlb;
- }
+ Renew(PL_lex_casestack, PL_lex_casemods + 2, char);
}
PL_lex_casestack[PL_lex_casemods++] = *s;
PL_lex_casestack[PL_lex_casemods] = '\0';
}
PL_lex_casestack[PL_lex_casemods++] = *s;
PL_lex_casestack[PL_lex_casemods] = '\0';
@@
-3113,11
+3109,7
@@
Perl_yylex(pTHX)
leftbracket:
s++;
if (PL_lex_brackets > 100) {
leftbracket:
s++;
if (PL_lex_brackets > 100) {
- char* newlb = Renew(PL_lex_brackstack, PL_lex_brackets + 1, char);
- if (newlb != PL_lex_brackstack) {
- SAVEFREEPV(newlb);
- PL_lex_brackstack = newlb;
- }
+ Renew(PL_lex_brackstack, PL_lex_brackets + 10, char);
}
switch (PL_expect) {
case XTERM:
}
switch (PL_expect) {
case XTERM:
@@
-3797,7
+3789,7
@@
Perl_yylex(pTHX)
case 'z': case 'Z':
keylookup: {
case 'z': case 'Z':
keylookup: {
-
I32
orig_keyword = 0;
+ orig_keyword = 0;
gv = Nullgv;
gvp = 0;
gv = Nullgv;
gvp = 0;
@@
-5045,8
+5037,8
@@
Perl_yylex(pTHX)
d[tmp] = '\0';
if (bad_proto && ckWARN(WARN_SYNTAX))
Perl_warner(aTHX_ packWARN(WARN_SYNTAX),
d[tmp] = '\0';
if (bad_proto && ckWARN(WARN_SYNTAX))
Perl_warner(aTHX_ packWARN(WARN_SYNTAX),
- "Illegal character in prototype for %
s
: %s",
-
SvPVX(PL_subname)
, d);
+ "Illegal character in prototype for %
"SVf"
: %s",
+
PL_subname
, d);
SvCUR(PL_lex_stuff) = tmp;
have_proto = TRUE;
SvCUR(PL_lex_stuff) = tmp;
have_proto = TRUE;
@@
-5057,6
+5049,8
@@
Perl_yylex(pTHX)
if (*s == ':' && s[1] != ':')
PL_expect = attrful;
if (*s == ':' && s[1] != ':')
PL_expect = attrful;
+ else if (!have_name && *s != '{' && key == KEY_sub)
+ Perl_croak(aTHX_ "Illegal declaration of anonymous subroutine");
if (have_proto) {
PL_nextval[PL_nexttoke].opval =
if (have_proto) {
PL_nextval[PL_nexttoke].opval =
@@
-7566,6
+7560,7
@@
Perl_start_subparse(pTHX_ I32 is_format, U32 flags)
PL_subline = CopLINE(PL_curcop);
CvPADLIST(PL_compcv) = pad_new(padnew_SAVE|padnew_SAVESUB);
CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc(outsidecv);
PL_subline = CopLINE(PL_curcop);
CvPADLIST(PL_compcv) = pad_new(padnew_SAVE|padnew_SAVESUB);
CvOUTSIDE(PL_compcv) = (CV*)SvREFCNT_inc(outsidecv);
+ CvOUTSIDE_SEQ(PL_compcv) = PL_cop_seqmax;
return oldsavestack_ix;
}
return oldsavestack_ix;
}