@@ -2235,14 +2235,16 @@ S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack)
2235
2235
PL_expect = XOPERATOR ;
2236
2236
}
2237
2237
}
2238
- start = PL_tokenbuf ;
2239
2238
if (UNLIKELY (normalize )) {
2240
- start = pv_uni_normalize (start , len , & len );
2241
- Copy (start , PL_tokenbuf , len + 1 , char );
2239
+ start = pv_uni_normalize (PL_tokenbuf , len , & len );
2240
+ if (start != PL_tokenbuf ) {
2241
+ Copy (start , PL_tokenbuf , len + 1 , char );
2242
+ Safefree (start );
2243
+ }
2242
2244
}
2243
2245
NEXTVAL_NEXTTOKE .opval
2244
2246
= newSVOP (OP_CONST ,0 ,
2245
- S_newSV_maybe_utf8 (aTHX_ start , len ));
2247
+ S_newSV_maybe_utf8 (aTHX_ PL_tokenbuf , len ));
2246
2248
NEXTVAL_NEXTTOKE .opval -> op_private |= OPpCONST_BARE ;
2247
2249
force_next (token );
2248
2250
}
@@ -4335,7 +4337,10 @@ S_intuit_more(pTHX_ char *s)
4335
4337
if (len > 1 ) {
4336
4338
if (UNLIKELY (normalize )) {
4337
4339
tmp = pv_uni_normalize (tmpbuf , len , & len );
4338
- Copy (tmp , tmpbuf , len + 1 , char );
4340
+ if (tmp != tmpbuf ) {
4341
+ Copy (tmp , tmpbuf , len + 1 , char );
4342
+ Safefree (tmp );
4343
+ }
4339
4344
}
4340
4345
if (gv_fetchpvn_flags (tmpbuf , len ,
4341
4346
UTF ? SVf_UTF8 : 0 , SVt_PV ))
0 commit comments