From f1ca556caf9f79bb9138a61896677c5b7d9ee6ca Mon Sep 17 00:00:00 2001 From: Fredrik Modeen Date: Fri, 12 Sep 2008 14:15:47 +0000 Subject: [PATCH] Fixed CID 321, 868: check item for NULL and delete recource leak git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27453 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../filetypes/ApplicationTypeWindow.cpp | 6 ++++-- src/preferences/filetypes/IconView.cpp | 17 +++++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/preferences/filetypes/ApplicationTypeWindow.cpp b/src/preferences/filetypes/ApplicationTypeWindow.cpp index f21b4009cf..7022cd6f00 100644 --- a/src/preferences/filetypes/ApplicationTypeWindow.cpp +++ b/src/preferences/filetypes/ApplicationTypeWindow.cpp @@ -703,7 +703,8 @@ ApplicationTypeWindow::_Save() SupportedTypeItem* item = dynamic_cast( fTypeListView->ItemAt(i)); - supportedTypes.AddString("types", item->Type()); + if (item != NULL) + supportedTypes.AddString("types", item->Type()); } version_info versionInfo; @@ -735,7 +736,8 @@ ApplicationTypeWindow::_Save() SupportedTypeItem* item = dynamic_cast( fTypeListView->ItemAt(i)); - item->Icon().CopyTo(info, item->Type(), true); + if (item != NULL) + item->Icon().CopyTo(info, item->Type(), true); } } diff --git a/src/preferences/filetypes/IconView.cpp b/src/preferences/filetypes/IconView.cpp index 0381979af0..92b6598aa6 100644 --- a/src/preferences/filetypes/IconView.cpp +++ b/src/preferences/filetypes/IconView.cpp @@ -574,8 +574,8 @@ IconView::MessageReceived(BMessage* message) if (message->WasDropped() && message->ReturnAddress() != BMessenger(this) && AcceptsDrag(message)) { // set icon from message - BBitmap* mini = NULL; - BBitmap* large = NULL; + BBitmap *mini = NULL; + BBitmap *large = NULL; const uint8* data = NULL; ssize_t size = 0; @@ -591,10 +591,15 @@ IconView::MessageReceived(BMessage* message) if (large != NULL || mini != NULL || (data != NULL && size > 0)) _SetIcon(large, mini, data, size); - - entry_ref ref; - if (message->FindRef("refs", &ref) == B_OK) - _SetIcon(&ref); + else { + entry_ref ref; + if (message->FindRef("refs", &ref) == B_OK) + _SetIcon(&ref); + } + + delete(large); + delete(mini); + delete(data); return; }