aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--regex.h4
-rw-r--r--regfree.c2
-rwxr-xr-xregtest_terex.sh4
4 files changed, 8 insertions, 6 deletions
diff --git a/README.md b/README.md
index 6958290..c35480e 100644
--- a/README.md
+++ b/README.md
@@ -14,13 +14,15 @@ It is still kept as a standalone library and may be useful to other projects as
Compared to hsrex, this library has the following changes:
-* Renamed `re_comp()` to `tere_comp()` and `re_exec()` to `tere_exec()`
+* Renamed `re_comp()` to `tere_comp()`, `re_exec()` to `tere_exec()`,
+ `re_free()` to `tere_free()` and `re_error()` to `tere_error()`
to avoid collisions with BSD's functions from unistd.h.
* Native UTF-8 support - no need to convert UTF-8 to UTF-32 first.
You no longer need to compile a special version of the library.
It expects Unicode strings by default unless specifying the `REG_RAW`
`tere_comp()` compilation flag.
* Support the `REG_ANCHORED` flag for `tere_exec()`.
+* `tere_free()` ignores nullified `regex_t` objects.
## TODO
diff --git a/regex.h b/regex.h
index 167b414..8b3f1bf 100644
--- a/regex.h
+++ b/regex.h
@@ -117,8 +117,8 @@ extern "C" {
#ifdef REGEX_STANDALONE
# undef regfree
# undef regerror
-# define regfree re_free
-# define regerror re_error
+# define regfree tere_free
+# define regerror tere_error
# undef __REG_WIDE_T
# define __REG_WIDE_T unsigned char
# undef __REG_NOCHAR
diff --git a/regfree.c b/regfree.c
index b0aaa70..0c3a0ab 100644
--- a/regfree.c
+++ b/regfree.c
@@ -45,7 +45,7 @@ void
regfree(
regex_t *re)
{
- if (re == NULL) {
+ if (re == NULL || re->re_fns == NULL) {
return;
}
(*((struct fns *)re->re_fns)->free)(re);
diff --git a/regtest_terex.sh b/regtest_terex.sh
index 0f903d3..4ac9083 100755
--- a/regtest_terex.sh
+++ b/regtest_terex.sh
@@ -140,7 +140,7 @@ cat<<-EOF>$rgsrc
rc = tere_exec(&cre, dat, datlen, NULL, 100, pmatch, eflags);
if ( rc != REG_OKAY )
{
- regerror(rc, &cre, buf, sizeof(buf));
+ tere_error(rc, &cre, buf, sizeof(buf));
fprintf(stderr, "Execution error. %s\n", buf);
return 1;
}
@@ -156,7 +156,7 @@ cat<<-EOF>$rgsrc
argv[2]+pmatch[i].rm_so);
printf("%s\n", buf);
}
- regfree(&cre);
+ tere_free(&cre);
return 0;
}
EOF