hrev45236 adds 1 changeset to branch 'master' old head: 43ee85f69ca063460212f6e357a86d32623056e4 new head: 03352b04c579d15b65c6a7cc1ed3648c8911a1bd overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=03352b0+%5E43ee85f ---------------------------------------------------------------------------- 03352b0: Fix #7736. Avoid memory corruption Signed-off-by: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> [ Janus <janus2@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev45236 Commit: 03352b04c579d15b65c6a7cc1ed3648c8911a1bd URL: http://cgit.haiku-os.org/haiku/commit/?id=03352b0 Author: Janus <janus2@xxxxxxxxx> Date: Fri Nov 30 22:21:33 2012 UTC Committer: Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> Commit-Date: Tue Feb 5 22:31:02 2013 UTC Ticket: https://dev.haiku-os.org/ticket/7736 ---------------------------------------------------------------------------- 2 files changed, 9 insertions(+), 5 deletions(-) src/apps/showimage/ShowImageView.cpp | 11 +++++++---- src/apps/showimage/ShowImageView.h | 3 ++- ---------------------------------------------------------------------------- diff --git a/src/apps/showimage/ShowImageView.cpp b/src/apps/showimage/ShowImageView.cpp index e6d9a70..d82d3c8 100644 --- a/src/apps/showimage/ShowImageView.cpp +++ b/src/apps/showimage/ShowImageView.cpp @@ -347,12 +347,13 @@ ShowImageView::SetImage(const BMessage* message) || message->FindRef("ref", &ref) != B_OK || bitmap == NULL) return B_ERROR; - status_t status = SetImage(&ref, bitmap); + BitmapOwner* bitmapOwner; + message->FindPointer("bitmapOwner", (void**)&bitmapOwner); + + status_t status = SetImage(&ref, bitmap, bitmapOwner); if (status == B_OK) { fFormatDescription = message->FindString("type"); fMimeType = message->FindString("mime"); - - message->FindPointer("bitmapOwner", (void**)&fBitmapOwner); } return status; @@ -360,7 +361,8 @@ ShowImageView::SetImage(const BMessage* message) status_t -ShowImageView::SetImage(const entry_ref* ref, BBitmap* bitmap) +ShowImageView::SetImage(const entry_ref* ref, BBitmap* bitmap, + BitmapOwner* bitmapOwner) { // Delete the old one, and clear everything fUndo.Clear(); @@ -369,6 +371,7 @@ ShowImageView::SetImage(const entry_ref* ref, BBitmap* bitmap) _DeleteBitmap(); fBitmap = bitmap; + fBitmapOwner = bitmapOwner; if (ref == NULL) fCurrentRef.device = -1; else diff --git a/src/apps/showimage/ShowImageView.h b/src/apps/showimage/ShowImageView.h index b14985b..bdf4d10 100644 --- a/src/apps/showimage/ShowImageView.h +++ b/src/apps/showimage/ShowImageView.h @@ -52,7 +52,8 @@ public: void SetTrackerMessenger( const BMessenger& trackerMessenger); status_t SetImage(const BMessage* message); - status_t SetImage(const entry_ref* ref, BBitmap* bitmap); + status_t SetImage(const entry_ref* ref, BBitmap* bitmap, + BitmapOwner* bitmapOwner); const entry_ref* Image() const { return &fCurrentRef; } BBitmap* Bitmap();