mirror of
https://github.com/fltk/fltk.git
synced 2026-05-27 02:46:34 +08:00
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
This commit is contained in:
+10
-13
@@ -139,9 +139,9 @@ 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,9 +735,9 @@ 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;
|
||||||
}
|
}
|
||||||
newPreDeleteProcs[0] = bufPreDeleteCB;
|
newPreDeleteProcs[0] = bufPreDeleteCB;
|
||||||
newCBArgs[0] = cbArg;
|
newCBArgs[0] = cbArg;
|
||||||
@@ -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 */
|
||||||
@@ -791,8 +788,8 @@ void Fl_Text_Buffer::remove_predelete_callback(Fl_Text_Predelete_Cb bufPreDelete
|
|||||||
newPreDeleteProcs[i] = mPredeleteProcs[i + 1];
|
newPreDeleteProcs[i] = mPredeleteProcs[i + 1];
|
||||||
newCBArgs[i] = mPredeleteCbArgs[i + 1];
|
newCBArgs[i] = mPredeleteCbArgs[i + 1];
|
||||||
}
|
}
|
||||||
delete[]mPredeleteProcs;
|
delete[] mPredeleteProcs;
|
||||||
delete[]mPredeleteCbArgs;
|
delete[] mPredeleteCbArgs;
|
||||||
mPredeleteProcs = newPreDeleteProcs;
|
mPredeleteProcs = newPreDeleteProcs;
|
||||||
mPredeleteCbArgs = newCBArgs;
|
mPredeleteCbArgs = newCBArgs;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user