diff --git a/src/kits/interface/Shelf.cpp b/src/kits/interface/Shelf.cpp index e21d03ce7d..ed1eba45a8 100644 --- a/src/kits/interface/Shelf.cpp +++ b/src/kits/interface/Shelf.cpp @@ -531,10 +531,12 @@ void BShelf::MessageReceived(BMessage *msg) { if (msg->what == kDeleteReplicant) { - BView *replicant = NULL; - if (msg->FindPointer("_target", (void **)&replicant) == B_OK && replicant != NULL) - DeleteReplicant(replicant); - + BHandler *replicant = NULL; + if (msg->FindPointer("_target", (void **)&replicant) == B_OK) { + BView *view = dynamic_cast(replicant); + if (view != NULL) + DeleteReplicant(view); + } return; } @@ -1152,11 +1154,13 @@ BShelf::_DeleteReplicant(replicant_data* item) delete item->dragger; } - if (loadedImage && item->image >= 0) - unload_add_on(item->image); + image_id image = item->image; delete item; + if (loadedImage && image >= 0) + unload_add_on(image); + return B_OK; }