MINOR: regex: Copy the original regex expression into string.
This is useful for the debug or for search regex in maps.
diff --git a/src/regex.c b/src/regex.c
index 7a76940..64f93c3 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -124,6 +124,13 @@
int regex_comp(const char *str, struct my_regex *regex, int cs, int cap, char **err)
{
+ /* copy the original regex format */
+ regex->regstr = strdup(str);
+ if (!regex->regstr) {
+ memprintf(err, "out of memory");
+ return 0;
+ }
+
#ifdef USE_PCRE_JIT
int flags = 0;
const char *error;
@@ -136,12 +143,14 @@
regex->reg = pcre_compile(str, flags, &error, &erroffset, NULL);
if (!regex->reg) {
+ free(regex->regstr);
memprintf(err, "regex '%s' is invalid (error=%s, erroffset=%d)", str, error, erroffset);
return 0;
}
regex->extra = pcre_study(regex->reg, PCRE_STUDY_JIT_COMPILE, &error);
if (!regex->extra) {
+ free(regex->regstr);
pcre_free(regex->reg);
memprintf(err, "failed to compile regex '%s' (error=%s)", str, error);
return 0;
@@ -155,6 +164,7 @@
flags |= REG_NOSUB;
if (regcomp(®ex->regex, str, flags) != 0) {
+ free(regex->regstr);
memprintf(err, "regex '%s' is invalid", str);
return 0;
}