summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1995-02-14 12:35:03 +0000
committerjkh <jkh@FreeBSD.org>1995-02-14 12:35:03 +0000
commit341ae850028a6bb3e38475511f882717112248a8 (patch)
tree5989f9ecd08a20c1fa2bca5336bd4e1b06157ab3
parent13a6aaa8e09495c037f54d4678956eb2eec93525 (diff)
downloadFreeBSD-src-341ae850028a6bb3e38475511f882717112248a8.zip
FreeBSD-src-341ae850028a6bb3e38475511f882717112248a8.tar.gz
The destructor always assumed that it would be called on objects created from
ONE constructor routine. This was bogus - there is also a system provided constructor which does not allocate a pattern buffer. Make less assumptions.
-rw-r--r--gnu/lib/libg++/libg++/Regex.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/gnu/lib/libg++/libg++/Regex.cc b/gnu/lib/libg++/libg++/Regex.cc
index 37e564b..65f03a0 100644
--- a/gnu/lib/libg++/libg++/Regex.cc
+++ b/gnu/lib/libg++/libg++/Regex.cc
@@ -39,10 +39,13 @@ extern "C" {
Regex::~Regex()
{
- if (buf->buffer) free(buf->buffer);
- if (buf->fastmap) free(buf->fastmap);
- delete(buf);
- delete(reg);
+ if (buf) {
+ if (buf->buffer) free(buf->buffer);
+ if (buf->fastmap) free(buf->fastmap);
+ delete(buf);
+ }
+ if (reg)
+ delete(reg);
}
Regex::Regex(const char* t, int fast, int bufsize,
OpenPOWER on IntegriCloud