diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2014-01-25 23:47:44 +0000 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2014-01-25 23:47:44 +0000 |
| commit | f7ac3b417c5ad7a1294a5cf0ba15233c1a334635 (patch) | |
| tree | efac7c4fac554c29d95e4a442b791728c27259b1 /src/Fl_Text_Buffer.cxx | |
| parent | 1d069a1a95b2a46bff9a6324c13c9161ee141827 (diff) | |
Fix potential memory leak in text buffer (STR # 3035).
Also small code formatting, remove one redundant statement.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10083 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Text_Buffer.cxx')
| -rw-r--r-- | src/Fl_Text_Buffer.cxx | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/Fl_Text_Buffer.cxx b/src/Fl_Text_Buffer.cxx index f2aaeb6c8..f57d7bd59 100644 --- a/src/Fl_Text_Buffer.cxx +++ b/src/Fl_Text_Buffer.cxx @@ -139,9 +139,9 @@ Fl_Text_Buffer::~Fl_Text_Buffer() delete[]mModifyProcs; delete[]mCbArgs; } - if (mNPredeleteProcs != 0) { - delete[]mPredeleteProcs; - delete[]mPredeleteCbArgs; + if (mNPredeleteProcs > 0) { + delete[] mPredeleteProcs; + delete[] mPredeleteCbArgs; } } @@ -735,9 +735,9 @@ void Fl_Text_Buffer::add_predelete_callback(Fl_Text_Predelete_Cb bufPreDeleteCB, newPreDeleteProcs[i + 1] = mPredeleteProcs[i]; newCBArgs[i + 1] = mPredeleteCbArgs[i]; } - if (!mNPredeleteProcs != 0) { - delete[]mPredeleteProcs; - delete[]mPredeleteCbArgs; + if (mNPredeleteProcs > 0) { + delete[] mPredeleteProcs; + delete[] mPredeleteCbArgs; } newPreDeleteProcs[0] = bufPreDeleteCB; newCBArgs[0] = cbArg; @@ -767,19 +767,16 @@ void Fl_Text_Buffer::remove_predelete_callback(Fl_Text_Predelete_Cb bufPreDelete return; } - /* Allocate new lists for remaining callback procs and args (if - any are left) */ + /* Allocate new lists for remaining callback procs and args (if any are left) */ mNPredeleteProcs--; if (mNPredeleteProcs == 0) { - mNPredeleteProcs = 0; delete[]mPredeleteProcs; mPredeleteProcs = NULL; delete[]mPredeleteCbArgs; mPredeleteCbArgs = NULL; return; } - Fl_Text_Predelete_Cb *newPreDeleteProcs = - new Fl_Text_Predelete_Cb[mNPredeleteProcs]; + Fl_Text_Predelete_Cb *newPreDeleteProcs = new Fl_Text_Predelete_Cb[mNPredeleteProcs]; void **newCBArgs = new void *[mNPredeleteProcs]; /* copy out the remaining members and free the old lists */ @@ -791,8 +788,8 @@ void Fl_Text_Buffer::remove_predelete_callback(Fl_Text_Predelete_Cb bufPreDelete newPreDeleteProcs[i] = mPredeleteProcs[i + 1]; newCBArgs[i] = mPredeleteCbArgs[i + 1]; } - delete[]mPredeleteProcs; - delete[]mPredeleteCbArgs; + delete[] mPredeleteProcs; + delete[] mPredeleteCbArgs; mPredeleteProcs = newPreDeleteProcs; mPredeleteCbArgs = newCBArgs; } |
