Browse Source

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
pull/49/head
Albrecht Schlosser 12 years ago
parent
commit
f7ac3b417c
  1. 11
      src/Fl_Text_Buffer.cxx

11
src/Fl_Text_Buffer.cxx

@ -139,7 +139,7 @@ Fl_Text_Buffer::~Fl_Text_Buffer()
delete[]mModifyProcs; delete[]mModifyProcs;
delete[]mCbArgs; delete[]mCbArgs;
} }
if (mNPredeleteProcs != 0) { if (mNPredeleteProcs > 0) {
delete[] mPredeleteProcs; delete[] mPredeleteProcs;
delete[] mPredeleteCbArgs; delete[] mPredeleteCbArgs;
} }
@ -735,7 +735,7 @@ void Fl_Text_Buffer::add_predelete_callback(Fl_Text_Predelete_Cb bufPreDeleteCB,
newPreDeleteProcs[i + 1] = mPredeleteProcs[i]; newPreDeleteProcs[i + 1] = mPredeleteProcs[i];
newCBArgs[i + 1] = mPredeleteCbArgs[i]; newCBArgs[i + 1] = mPredeleteCbArgs[i];
} }
if (!mNPredeleteProcs != 0) { if (mNPredeleteProcs > 0) {
delete[] mPredeleteProcs; delete[] mPredeleteProcs;
delete[] mPredeleteCbArgs; delete[] mPredeleteCbArgs;
} }
@ -767,19 +767,16 @@ void Fl_Text_Buffer::remove_predelete_callback(Fl_Text_Predelete_Cb bufPreDelete
return; return;
} }
/* Allocate new lists for remaining callback procs and args (if /* Allocate new lists for remaining callback procs and args (if any are left) */
any are left) */
mNPredeleteProcs--; mNPredeleteProcs--;
if (mNPredeleteProcs == 0) { if (mNPredeleteProcs == 0) {
mNPredeleteProcs = 0;
delete[]mPredeleteProcs; delete[]mPredeleteProcs;
mPredeleteProcs = NULL; mPredeleteProcs = NULL;
delete[]mPredeleteCbArgs; delete[]mPredeleteCbArgs;
mPredeleteCbArgs = NULL; mPredeleteCbArgs = NULL;
return; return;
} }
Fl_Text_Predelete_Cb *newPreDeleteProcs = Fl_Text_Predelete_Cb *newPreDeleteProcs = new Fl_Text_Predelete_Cb[mNPredeleteProcs];
new Fl_Text_Predelete_Cb[mNPredeleteProcs];
void **newCBArgs = new void *[mNPredeleteProcs]; void **newCBArgs = new void *[mNPredeleteProcs];
/* copy out the remaining members and free the old lists */ /* copy out the remaining members and free the old lists */

Loading…
Cancel
Save