diff options
author | jkh <jkh@FreeBSD.org> | 1995-02-14 12:35:03 +0000 |
---|---|---|
committer | jkh <jkh@FreeBSD.org> | 1995-02-14 12:35:03 +0000 |
commit | 341ae850028a6bb3e38475511f882717112248a8 (patch) | |
tree | 5989f9ecd08a20c1fa2bca5336bd4e1b06157ab3 | |
parent | 13a6aaa8e09495c037f54d4678956eb2eec93525 (diff) | |
download | FreeBSD-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.cc | 11 |
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, |