summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embed.fnc6
-rw-r--r--embed.h4
-rw-r--r--proto.h14
-rw-r--r--regexec.c44
4 files changed, 17 insertions, 51 deletions
diff --git a/embed.fnc b/embed.fnc
index d74193ed8f..3cc2d14906 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -456,8 +456,8 @@ p |char* |mem_collxfrm |NN const char* s|STRLEN len|NN STRLEN* xlen
Afp |SV* |mess |NN const char* pat|...
Ap |SV* |vmess |NN const char* pat|NULLOK va_list* args
p |void |qerror |NN SV* err
-Apd |void |sortsv |NN SV** array|size_t num_elts|SVCOMPARE_t cmp
-Apd |void |sortsv_flags |NN SV** array|size_t num_elts|SVCOMPARE_t cmp|U32 flags
+Apd |void |sortsv |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp
+Apd |void |sortsv_flags |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags
Apd |int |mg_clear |NN SV* sv
Apd |int |mg_copy |NN SV* sv|NN SV* nsv|NULLOK const char* key|I32 klen
pd |void |mg_localize |NN SV* sv|NN SV* nsv
@@ -1312,9 +1312,7 @@ ERs |bool |reginclass |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
Es |CHECKPOINT|regcppush |I32 parenfloor
Es |char*|regcppop
Es |void |cache_re |NN regexp *prog
-ERs |U8* |reghop |NN U8 *pos|I32 off
ERsn |U8* |reghop3 |NN U8 *pos|I32 off|NN U8 *lim
-ERs |U8* |reghopmaybe |NN U8 *pos|I32 off
ERsn |U8* |reghopmaybe3 |NN U8 *pos|I32 off|NN U8 *lim
ERs |char* |find_byclass |NN regexp * prog|NN regnode *c|NN char *s|NN const char *strend|I32 norun
Es |void |to_utf8_substr |NN regexp * prog
diff --git a/embed.h b/embed.h
index d6b9bfabfc..53d6043d5e 100644
--- a/embed.h
+++ b/embed.h
@@ -1340,9 +1340,7 @@
#define regcppush S_regcppush
#define regcppop S_regcppop
#define cache_re S_cache_re
-#define reghop S_reghop
#define reghop3 S_reghop3
-#define reghopmaybe S_reghopmaybe
#define reghopmaybe3 S_reghopmaybe3
#define find_byclass S_find_byclass
#define to_utf8_substr S_to_utf8_substr
@@ -3491,9 +3489,7 @@
#define regcppush(a) S_regcppush(aTHX_ a)
#define regcppop() S_regcppop(aTHX)
#define cache_re(a) S_cache_re(aTHX_ a)
-#define reghop(a,b) S_reghop(aTHX_ a,b)
#define reghop3 S_reghop3
-#define reghopmaybe(a,b) S_reghopmaybe(aTHX_ a,b)
#define reghopmaybe3 S_reghopmaybe3
#define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e)
#define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a)
diff --git a/proto.h b/proto.h
index 528bcf628c..6bd5955649 100644
--- a/proto.h
+++ b/proto.h
@@ -1265,10 +1265,12 @@ PERL_CALLCONV void Perl_qerror(pTHX_ SV* err)
__attribute__nonnull__(pTHX_1);
PERL_CALLCONV void Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp)
- __attribute__nonnull__(pTHX_1);
+ __attribute__nonnull__(pTHX_1)
+ __attribute__nonnull__(pTHX_3);
PERL_CALLCONV void Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)
- __attribute__nonnull__(pTHX_1);
+ __attribute__nonnull__(pTHX_1)
+ __attribute__nonnull__(pTHX_3);
PERL_CALLCONV int Perl_mg_clear(pTHX_ SV* sv)
__attribute__nonnull__(pTHX_1);
@@ -3617,19 +3619,11 @@ STATIC char* S_regcppop(pTHX);
STATIC void S_cache_re(pTHX_ regexp *prog)
__attribute__nonnull__(pTHX_1);
-STATIC U8* S_reghop(pTHX_ U8 *pos, I32 off)
- __attribute__warn_unused_result__
- __attribute__nonnull__(pTHX_1);
-
STATIC U8* S_reghop3(U8 *pos, I32 off, U8 *lim)
__attribute__warn_unused_result__
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-STATIC U8* S_reghopmaybe(pTHX_ U8 *pos, I32 off)
- __attribute__warn_unused_result__
- __attribute__nonnull__(pTHX_1);
-
STATIC U8* S_reghopmaybe3(U8 *pos, I32 off, U8 *lim)
__attribute__warn_unused_result__
__attribute__nonnull__(1)
diff --git a/regexec.c b/regexec.c
index f5fdd8d641..4010b34eae 100644
--- a/regexec.c
+++ b/regexec.c
@@ -116,28 +116,20 @@
#define CHR_SVLEN(sv) (do_utf8 ? sv_len_utf8(sv) : SvCUR(sv))
#define CHR_DIST(a,b) (PL_reg_match_utf8 ? utf8_distance(a,b) : a - b)
-#define reghop_c(pos,off) ((char*)reghop((U8*)pos, off))
-#define reghopmaybe_c(pos,off) ((char*)reghopmaybe((U8*)pos, off))
-#define HOP(pos,off) (PL_reg_match_utf8 ? reghop((U8*)pos, off) : (U8*)(pos + off))
-#define HOPMAYBE(pos,off) (PL_reg_match_utf8 ? reghopmaybe((U8*)pos, off) : (U8*)(pos + off))
-#define HOPc(pos,off) ((char*)HOP(pos,off))
-#define HOPMAYBEc(pos,off) ((char*)HOPMAYBE(pos,off))
-
-#define HOPBACK(pos, off) ( \
- (PL_reg_match_utf8) \
- ? reghopmaybe((U8*)pos, -off) \
+#define HOPc(pos,off) ((char *)(PL_reg_match_utf8 \
+ ? reghop3((U8*)pos, off, (U8*)(off >= 0 ? PL_regeol : PL_bostr)) \
+ : (U8*)(pos + off)))
+#define HOPBACKc(pos, off) ((char*) \
+ ((PL_reg_match_utf8) \
+ ? reghopmaybe3((U8*)pos, -off, ((U8*)(off < 0 ? PL_regeol : PL_bostr))) \
: (pos - off >= PL_bostr) \
? (U8*)(pos - off) \
- : (U8*)NULL \
+ : (U8*)NULL) \
)
-#define HOPBACKc(pos, off) (char*)HOPBACK(pos, off)
-#define reghop3_c(pos,off,lim) ((char*)reghop3((U8*)pos, off, (U8*)lim))
#define reghopmaybe3_c(pos,off,lim) ((char*)reghopmaybe3((U8*)pos, off, (U8*)lim))
#define HOP3(pos,off,lim) (PL_reg_match_utf8 ? reghop3((U8*)pos, off, (U8*)lim) : (U8*)(pos + off))
-#define HOPMAYBE3(pos,off,lim) (PL_reg_match_utf8 ? reghopmaybe3((U8*)pos, off, (U8*)lim) : (U8*)(pos + off))
#define HOP3c(pos,off,lim) ((char*)HOP3(pos,off,lim))
-#define HOPMAYBE3c(pos,off,lim) ((char*)HOPMAYBE3(pos,off,lim))
#define LOAD_UTF8_CHARCLASS(class,str) STMT_START { \
if (!CAT2(PL_utf8_,class)) { bool ok; ENTER; save_re_context(); ok=CAT2(is_utf8_,class)((const U8*)str); assert(ok); LEAVE; } } STMT_END
@@ -1898,10 +1890,10 @@ Perl_regexec_flags(pTHX_ register regexp *prog, char *stringarg, register char *
s = HOPc(s, -back_max);
}
else {
- char *t = (last1 >= PL_bostr) ? HOPc(last1, 1) : last1 + 1;
+ char * const t = (last1 >= PL_bostr) ? HOPc(last1, 1) : last1 + 1;
last1 = HOPc(s, -back_min);
- s = t;
+ s = t;
}
if (do_utf8) {
while (s <= last1) {
@@ -4363,7 +4355,7 @@ S_regmatch(pTHX_ regnode *prog)
case UNLESSM:
n = 0;
if (scan->flags) {
- char *s = HOPBACKc(locinput, scan->flags);
+ char * const s = HOPBACKc(locinput, scan->flags);
if (!s)
goto say_yes;
PL_reginput = s;
@@ -4374,7 +4366,7 @@ S_regmatch(pTHX_ regnode *prog)
case IFMATCH:
n = 1;
if (scan->flags) {
- char *s = HOPBACKc(locinput, scan->flags);
+ char * const s = HOPBACKc(locinput, scan->flags);
if (!s)
goto say_no;
PL_reginput = s;
@@ -5085,13 +5077,6 @@ S_reginclass(pTHX_ register const regnode *n, register const U8* p, STRLEN* lenp
}
STATIC U8 *
-S_reghop(pTHX_ U8 *s, I32 off)
-{
- dVAR;
- return S_reghop3(s, off, (U8*)(off >= 0 ? PL_regeol : PL_bostr));
-}
-
-STATIC U8 *
S_reghop3(U8 *s, I32 off, U8* lim)
{
dVAR;
@@ -5117,13 +5102,6 @@ S_reghop3(U8 *s, I32 off, U8* lim)
}
STATIC U8 *
-S_reghopmaybe(pTHX_ U8 *s, I32 off)
-{
- dVAR;
- return S_reghopmaybe3(s, off, (U8*)(off >= 0 ? PL_regeol : PL_bostr));
-}
-
-STATIC U8 *
S_reghopmaybe3(U8* s, I32 off, U8* lim)
{
dVAR;