@@ -1908,7 +1908,7 @@ S_incline(pTHX_ const char *s, const char *end)
1908
1908
while (SPACE_OR_TAB (* s ))
1909
1909
s ++ ;
1910
1910
if (memBEGINs (s , (STRLEN ) (end - s ), "line" ))
1911
- s += sizeof ("line" ) - 1 ;
1911
+ s += STRLENs ("line" );
1912
1912
else
1913
1913
return ;
1914
1914
if (SPACE_OR_TAB (* s ))
@@ -1961,7 +1961,7 @@ S_incline(pTHX_ const char *s, const char *end)
1961
1961
char * tmpbuf2 ;
1962
1962
GV * gv2 ;
1963
1963
1964
- if (tmplen2 + 2 <= sizeof smallbuf )
1964
+ if (tmplen2 + 2 <= C_ARRAY_LENGTH ( smallbuf ) )
1965
1965
tmpbuf2 = smallbuf ;
1966
1966
else
1967
1967
Newx (tmpbuf2 , tmplen2 + 2 , char );
@@ -2284,8 +2284,8 @@ S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack)
2284
2284
char * s2 = PL_tokenbuf ;
2285
2285
STRLEN len2 = len ;
2286
2286
if (allow_pack && memBEGINPs (s2 , len , "CORE::" )) {
2287
- s2 += sizeof ("CORE::" ) - 1 ;
2288
- len2 -= sizeof ("CORE::" ) - 1 ;
2287
+ s2 += STRLENs ("CORE::" );
2288
+ len2 -= STRLENs ("CORE::" );
2289
2289
}
2290
2290
if (keyword (s2 , len2 , 0 ))
2291
2291
return start ;
@@ -4134,15 +4134,15 @@ S_scan_const(pTHX_ char *start)
4134
4134
char hex_string [4 ];
4135
4135
int len =
4136
4136
my_snprintf (hex_string ,
4137
- sizeof (hex_string ),
4137
+ C_ARRAY_LENGTH (hex_string ),
4138
4138
"%02X." ,
4139
4139
4140
4140
/* The regex compiler is
4141
4141
* expecting Unicode, not
4142
4142
* native */
4143
4143
NATIVE_TO_LATIN1 (* str ));
4144
4144
PERL_MY_SNPRINTF_POST_GUARD (len ,
4145
- sizeof (hex_string ));
4145
+ C_ARRAY_LENGTH (hex_string ));
4146
4146
Copy (hex_string , d , 3 , char );
4147
4147
d += 3 ;
4148
4148
str ++ ;
@@ -4169,7 +4169,8 @@ S_scan_const(pTHX_ char *start)
4169
4169
/* Convert first code point to Unicode hex,
4170
4170
* including the boiler plate before it. */
4171
4171
output_length =
4172
- my_snprintf (hex_string , sizeof (hex_string ),
4172
+ my_snprintf (hex_string ,
4173
+ C_ARRAY_LENGTH (hex_string ),
4173
4174
"\\N{U+%X" ,
4174
4175
(unsigned int ) NATIVE_TO_UNI (uv ));
4175
4176
@@ -4192,7 +4193,7 @@ S_scan_const(pTHX_ char *start)
4192
4193
& char_length );
4193
4194
output_length =
4194
4195
my_snprintf (hex_string ,
4195
- sizeof (hex_string ),
4196
+ C_ARRAY_LENGTH (hex_string ),
4196
4197
".%X" ,
4197
4198
(unsigned int ) NATIVE_TO_UNI (uv ));
4198
4199
@@ -4616,7 +4617,7 @@ S_intuit_more(pTHX_ char *s, char *e)
4616
4617
* strongly suspect this isn't a character class */
4617
4618
if (isWORDCHAR_lazy_if_safe (s + 1 , PL_bufend , UTF )) {
4618
4619
int len ;
4619
- char tmpbuf [sizeof PL_tokenbuf * 4 ];
4620
+ char tmpbuf [ C_ARRAY_LENGTH ( PL_tokenbuf ) * 4 ];
4620
4621
scan_ident (s , tmpbuf , C_ARRAY_END (tmpbuf ), FALSE);
4621
4622
len = (int )strlen (tmpbuf );
4622
4623
if ( len > 1
@@ -4782,7 +4783,7 @@ S_intuit_method(pTHX_ char *start, SV *ioname, CV *cv)
4782
4783
return 0 ;
4783
4784
4784
4785
char * s = start + (* start == '$' );
4785
- char tmpbuf [sizeof PL_tokenbuf ];
4786
+ char tmpbuf [C_ARRAY_LENGTH ( PL_tokenbuf ) ];
4786
4787
STRLEN len ;
4787
4788
GV * indirgv ;
4788
4789
/* Mustn't actually add anything to a symbol table.
@@ -5261,7 +5262,7 @@ yyl_sigvar(pTHX_ char *s)
5261
5262
char * dest = PL_tokenbuf + 1 ;
5262
5263
/* read var name, including sigil, into PL_tokenbuf */
5263
5264
PL_tokenbuf [0 ] = sigil ;
5264
- parse_ident (& s , & dest , dest + sizeof (PL_tokenbuf ) - 1 ,
5265
+ parse_ident (& s , & dest , C_ARRAY_END (PL_tokenbuf ),
5265
5266
0 , cBOOL (UTF ), FALSE);
5266
5267
* dest = '\0' ;
5267
5268
assert (PL_tokenbuf [1 ]); /* we have a variable name */
@@ -5449,7 +5450,7 @@ yyl_dollar(pTHX_ char *s)
5449
5450
&& (t = (char * ) memchr (s , '}' , PL_bufend - s ))
5450
5451
&& (t = (char * ) memchr (t , '=' , PL_bufend - t )))
5451
5452
{
5452
- char tmpbuf [sizeof PL_tokenbuf ];
5453
+ char tmpbuf [C_ARRAY_LENGTH ( PL_tokenbuf ) ];
5453
5454
do {
5454
5455
t ++ ;
5455
5456
} while (isSPACE (* t ));
@@ -5485,7 +5486,7 @@ yyl_dollar(pTHX_ char *s)
5485
5486
PL_expect = XTERM ;/* e.g. print $fh &sub */
5486
5487
}
5487
5488
else if (isIDFIRST_lazy_if_safe (s , PL_bufend , UTF )) {
5488
- char tmpbuf [sizeof PL_tokenbuf ];
5489
+ char tmpbuf [C_ARRAY_LENGTH ( PL_tokenbuf ) ];
5489
5490
int t2 ;
5490
5491
STRLEN len ;
5491
5492
scan_word (s , tmpbuf , C_ARRAY_END (tmpbuf ), TRUE, & len );
@@ -7086,7 +7087,7 @@ yyl_require(pTHX_ char *s, I32 orig_keyword)
7086
7087
* PL_tokenbuf = '\0' ;
7087
7088
s = force_word (s ,BAREWORD ,TRUE,TRUE);
7088
7089
if (isIDFIRST_lazy_if_safe (PL_tokenbuf ,
7089
- PL_tokenbuf + sizeof (PL_tokenbuf ),
7090
+ C_ARRAY_END (PL_tokenbuf ),
7090
7091
UTF ))
7091
7092
{
7092
7093
gv_stashpvn (PL_tokenbuf , strlen (PL_tokenbuf ),
@@ -7268,8 +7269,9 @@ yyl_my(pTHX_ char *s, I32 my)
7268
7269
char tmpbuf [1024 ];
7269
7270
int i ;
7270
7271
PL_bufptr = s ;
7271
- i = my_snprintf (tmpbuf , sizeof (tmpbuf ), "No such class %.1000s" , PL_tokenbuf );
7272
- PERL_MY_SNPRINTF_POST_GUARD (i , sizeof (tmpbuf ));
7272
+ i = my_snprintf (tmpbuf , C_ARRAY_LENGTH (tmpbuf ),
7273
+ "No such class %.1000s" , PL_tokenbuf );
7274
+ PERL_MY_SNPRINTF_POST_GUARD (i , C_ARRAY_LENGTH (tmpbuf ));
7273
7275
yyerror_pv (tmpbuf , UTF ? SVf_UTF8 : 0 );
7274
7276
}
7275
7277
}
@@ -7404,8 +7406,8 @@ yyl_fake_eof(pTHX_ U32 fake_eof, bool bof, char *s)
7404
7406
#ifdef ALTERNATE_SHEBANG
7405
7407
else {
7406
7408
static char const as [] = ALTERNATE_SHEBANG ;
7407
- if (* s == as [0 ] && strnEQ (s , as , sizeof (as ) - 1 ))
7408
- d = s + (sizeof (as ) - 1 );
7409
+ if (* s == as [0 ] && strnEQ (s , as , C_ARRAY_LENGTH (as ) - 1 ))
7410
+ d = s + (C_ARRAY_LENGTH (as ) - 1 );
7409
7411
}
7410
7412
#endif /* ALTERNATE_SHEBANG */
7411
7413
}
@@ -9082,7 +9084,7 @@ yyl_keylookup(pTHX_ char *s, GV *gv)
9082
9084
9083
9085
/* Check for lexical sub */
9084
9086
if (PL_expect != XOPERATOR ) {
9085
- char tmpbuf [sizeof PL_tokenbuf + 1 ];
9087
+ char tmpbuf [C_ARRAY_LENGTH ( PL_tokenbuf ) + 1 ];
9086
9088
* tmpbuf = '&' ;
9087
9089
Copy (PL_tokenbuf , tmpbuf + 1 , len , char );
9088
9090
c .off = pad_findmy_pvn (tmpbuf , len + 1 , 0 );
@@ -9155,7 +9157,7 @@ yyl_try(pTHX_ char *s)
9155
9157
STRLEN len ;
9156
9158
9157
9159
/* Copy the longest sequence of isPLUGINFIX() chars into PL_tokenbuf */
9158
- while (s_end < PL_bufend && d < PL_tokenbuf + sizeof (PL_tokenbuf )- 1 && isPLUGINFIX (* s_end ))
9160
+ while (s_end < PL_bufend && d < C_ARRAY_END (PL_tokenbuf )- 1 && isPLUGINFIX (* s_end ))
9159
9161
* d ++ = * s_end ++ ;
9160
9162
* d = '\0' ;
9161
9163
@@ -10993,7 +10995,7 @@ S_scan_heredoc(pTHX_ char *s)
10993
10995
10994
10996
s += 2 ;
10995
10997
d = PL_tokenbuf + 1 ;
10996
- e = PL_tokenbuf + sizeof PL_tokenbuf - 1 ;
10998
+ e = C_ARRAY_END ( PL_tokenbuf ) ;
10997
10999
* PL_tokenbuf = '\n' ;
10998
11000
peek = s ;
10999
11001
@@ -11037,7 +11039,7 @@ S_scan_heredoc(pTHX_ char *s)
11037
11039
d += len ;
11038
11040
}
11039
11041
11040
- if (d >= PL_tokenbuf + sizeof PL_tokenbuf - 1 )
11042
+ if (d >= C_ARRAY_END ( PL_tokenbuf ) - 1 )
11041
11043
croak ("Delimiter for here document is too long" );
11042
11044
11043
11045
* d ++ = '\n' ;
@@ -11404,7 +11406,7 @@ S_scan_heredoc(pTHX_ char *s)
11404
11406
Safefree (indent );
11405
11407
SvREFCNT_dec (tmpstr );
11406
11408
CopLINE_set (PL_curcop , origline );
11407
- missingterm (PL_tokenbuf + 1 , sizeof (PL_tokenbuf ) - 1 );
11409
+ missingterm (PL_tokenbuf + 1 , C_ARRAY_LENGTH (PL_tokenbuf ) - 1 );
11408
11410
}
11409
11411
11410
11412
@@ -11434,7 +11436,7 @@ S_scan_inputsymbol(pTHX_ char *start)
11434
11436
I32 len ;
11435
11437
bool nomagicopen = FALSE;
11436
11438
char * d = PL_tokenbuf ;/* start of temp holding space */
11437
- const char * const e = PL_tokenbuf + sizeof PL_tokenbuf ;/* end of temp holding space */
11439
+ const char * const e = C_ARRAY_END ( PL_tokenbuf ) ;/* end of temp holding space */
11438
11440
11439
11441
PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL ;
11440
11442
@@ -11454,7 +11456,7 @@ S_scan_inputsymbol(pTHX_ char *start)
11454
11456
or if it didn't end, or if we see a newline
11455
11457
*/
11456
11458
11457
- if (len >= (I32 )sizeof PL_tokenbuf )
11459
+ if (len >= (I32 ) C_ARRAY_LENGTH ( PL_tokenbuf ) )
11458
11460
croak ("Excessively long <> operator" );
11459
11461
if (s >= end )
11460
11462
croak ("Unterminated <> operator" );
@@ -12394,7 +12396,7 @@ Perl_scan_num(pTHX_ const char *start, YYSTYPE* lvalp)
12394
12396
case '6' : case '7' : case '8' : case '9' : case '.' :
12395
12397
decimal :
12396
12398
d = PL_tokenbuf ;
12397
- e = PL_tokenbuf + sizeof PL_tokenbuf - 6 ; /* room for various punctuation */
12399
+ e = C_ARRAY_END ( PL_tokenbuf ) - 6 ; /* room for various punctuation */
12398
12400
floatit = FALSE;
12399
12401
if (hexfp ) {
12400
12402
floatit = TRUE;
@@ -13095,7 +13097,7 @@ S_swallow_bom(pTHX_ U8 *s)
13095
13097
#ifdef DEBUGGING
13096
13098
if (DEBUG_p_TEST || DEBUG_T_TEST ) PerlIO_printf (Perl_debug_log , "UTF-8 script encoding (BOM)\n" );
13097
13099
#endif
13098
- s += sizeof (BOM_UTF8 ) - 1 ; /* UTF-8 */
13100
+ s += C_ARRAY_LENGTH (BOM_UTF8 ) - 1 ; /* UTF-8 */
13099
13101
}
13100
13102
break ;
13101
13103
}
0 commit comments