summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sv.h3
-rw-r--r--util.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/sv.h b/sv.h
index 8c98c892cc..a80a0ac083 100644
--- a/sv.h
+++ b/sv.h
@@ -1347,6 +1347,9 @@ the scalar's value cannot change unless written to.
# define BmUSEFUL(sv) ((XPVBM*) SvANY(sv))->xiv_u.xivu_i32
# define BmPREVIOUS(sv) ((XPVBM*) SvANY(sv))->xbm_previous
#endif
+#define BmPREVIOUS_set(sv, val) \
+ STMT_START { assert(SvTYPE(sv) == SVt_PVBM); \
+ (((XPVBM*)SvANY(sv))->xbm_previous = (U16)(val)); } STMT_END
#define FmLINES(sv) ((XPVFM*) SvANY(sv))->xfm_lines
diff --git a/util.c b/util.c
index daf88da933..1ae9459315 100644
--- a/util.c
+++ b/util.c
@@ -522,7 +522,7 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
}
}
BmRARE(sv) = s[rarest];
- BmPREVIOUS(sv) = (U16)rarest;
+ BmPREVIOUS_set(sv, rarest);
BmUSEFUL(sv) = 100; /* Initial value */
if (flags & FBMcf_TAIL)
SvTAIL_on(sv);