summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2014-01-25 23:47:44 +0000
committerAlbrecht Schlosser <albrechts.fltk@online.de>2014-01-25 23:47:44 +0000
commitf7ac3b417c5ad7a1294a5cf0ba15233c1a334635 (patch)
treeefac7c4fac554c29d95e4a442b791728c27259b1 /src
parent1d069a1a95b2a46bff9a6324c13c9161ee141827 (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')
-rw-r--r--src/Fl_Text_Buffer.cxx23
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;
}