summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2010-08-20 22:14:43 +0100
committerReuben Thomas <rrt@sc3d.org>2010-08-20 22:14:43 +0100
commit68665b65a3941225bce917573b77d78462aac9ee (patch)
tree9c67679f9e3c53bfee65346aa2a96f25243a52b1
parente1f0310b0f30357b152ed3cbaba492fd7da92103 (diff)
downloadlrexlib-68665b65a3941225bce917573b77d78462aac9ee.tar.gz
Shorten if (p) free(p) to free(p) and fix a space leak in gnu.c (call
regfree).
-rw-r--r--src/gnu/lgnu.c7
-rw-r--r--src/pcre/lpcre.c2
-rw-r--r--src/posix/lposix.c3
-rw-r--r--src/tre/ltre.c3
4 files changed, 6 insertions, 9 deletions
diff --git a/src/gnu/lgnu.c b/src/gnu/lgnu.c
index 9e3dd50..1f9d76b 100644
--- a/src/gnu/lgnu.c
+++ b/src/gnu/lgnu.c
@@ -260,10 +260,9 @@ static int Gnu_gc (lua_State *L) {
TGnu *ud = check_ud (L);
if (ud->freed == 0) { /* precaution against "manual" __gc calling */
ud->freed = 1;
- if (ud->r.regs_allocated != REGS_UNALLOCATED) {
- free (ud->match.start);
- free (ud->match.end);
- }
+ regfree (&ud->r);
+ free (ud->match.start);
+ free (ud->match.end);
}
return 0;
}
diff --git a/src/pcre/lpcre.c b/src/pcre/lpcre.c
index bf72f13..ee65859 100644
--- a/src/pcre/lpcre.c
+++ b/src/pcre/lpcre.c
@@ -337,7 +337,7 @@ static int Lpcre_gc (lua_State *L) {
if (ud->pr) pcre_free (ud->pr);
if (ud->extra) pcre_free (ud->extra);
if (ud->tables) pcre_free ((void *)ud->tables);
- if (ud->match) free (ud->match);
+ free (ud->match);
}
return 0;
}
diff --git a/src/posix/lposix.c b/src/posix/lposix.c
index aa500ac..16e61ed 100644
--- a/src/posix/lposix.c
+++ b/src/posix/lposix.c
@@ -193,8 +193,7 @@ static int Posix_gc (lua_State *L) {
if (ud->freed == 0) { /* precaution against "manual" __gc calling */
ud->freed = 1;
regfree (&ud->r);
- if (ud->match)
- free (ud->match);
+ free (ud->match);
}
return 0;
}
diff --git a/src/tre/ltre.c b/src/tre/ltre.c
index 0b1f1af..cdbe3bd 100644
--- a/src/tre/ltre.c
+++ b/src/tre/ltre.c
@@ -208,8 +208,7 @@ static int Ltre_gc (lua_State *L) {
if (ud->freed == 0) { /* precaution against "manual" __gc calling */
ud->freed = 1;
tre_regfree (&ud->r);
- if (ud->match)
- free (ud->match);
+ free (ud->match);
}
return 0;
}