From f7ac3b417c5ad7a1294a5cf0ba15233c1a334635 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Sat, 25 Jan 2014 23:47:44 +0000 Subject: 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 --- src/Fl_Text_Buffer.cxx | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3