Change 24725 by [EMAIL PROTECTED] on 2005/06/07 12:08:58
The FBM compile code is mutable, because it's permissible to FBM
compile a read-only value.
Affected files ...
... //depot/perl/util.c#459 edit
Differences ...
==== //depot/perl/util.c#459 (text) ====
Index: perl/util.c
--- perl/util.c#458~24717~ Tue Jun 7 01:18:59 2005
+++ perl/util.c Tue Jun 7 05:08:58 2005
@@ -366,7 +366,7 @@
void
Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
{
- register U8 *s;
+ const register U8 *s;
register U8 *table;
register U32 i;
STRLEN len;
@@ -379,20 +379,20 @@
if (mg && mg->mg_len >= 0)
mg->mg_len++;
}
- s = (U8*)SvPV_force(sv, len);
+ s = (U8*)SvPV_force_mutable(sv, len);
SvUPGRADE(sv, SVt_PVBM);
if (len == 0) /* TAIL might be on a zero-length string. */
return;
if (len > 2) {
U8 mlen;
- unsigned char *sb;
+ const unsigned char *sb;
if (len > 255)
mlen = 255;
else
mlen = (U8)len;
Sv_Grow(sv, len + 256 + FBM_TABLE_OFFSET);
- table = (unsigned char*)(SvPVX(sv) + len + FBM_TABLE_OFFSET);
+ table = (unsigned char*)(SvPVX_mutable(sv) + len + FBM_TABLE_OFFSET);
s = table - 1 - FBM_TABLE_OFFSET; /* last char */
memset((void*)table, mlen, 256);
table[-1] = (U8)flags;
@@ -407,7 +407,7 @@
sv_magic(sv, Nullsv, PERL_MAGIC_bm, Nullch, 0); /* deep magic */
SvVALID_on(sv);
- s = (unsigned char*)(SvPVX(sv)); /* deeper magic */
+ s = (const unsigned char*)(SvPVX_const(sv)); /* deeper magic */
for (i = 0; i < len; i++) {
if (PL_freq[s[i]] < frequency) {
rarest = i;
@@ -443,7 +443,8 @@
{
register unsigned char *s;
STRLEN l;
- register unsigned char *little = (unsigned char *)SvPV(littlestr,l);
+ register const unsigned char *little
+ = (const unsigned char *)SvPV_const(littlestr,l);
register STRLEN littlelen = l;
register const I32 multiline = flags & FBMrf_MULTILINE;
@@ -574,7 +575,7 @@
{ /* Do actual FBM. */
register const unsigned char *table = little + littlelen +
FBM_TABLE_OFFSET;
- register unsigned char *oldlittle;
+ const register unsigned char *oldlittle;
if (littlelen > (STRLEN)(bigend - big))
return Nullch;
End of Patch.