AppServer: check for NULL bitmap.
Consistently check for NULL the ServerBitmap pointer. There seems to be cases where BView::DragMessage could pass an invalid Bitmap token to app_server. Maybe it's when a client only bitmap is passed, I don't know. Anyway, this is defensive programming, and at least we check for NULL consistently now. This fixes #11681. Note that SuperFreeCell still crashes, but at least app_server doesn't crash.
This commit is contained in:
@@ -612,7 +612,8 @@ EventDispatcher::SetDragMessage(BMessage& message,
|
|||||||
|
|
||||||
if (fLastButtons == 0) {
|
if (fLastButtons == 0) {
|
||||||
// mouse buttons has already been released or was never pressed
|
// mouse buttons has already been released or was never pressed
|
||||||
bitmap->ReleaseReference();
|
if (bitmap != NULL)
|
||||||
|
bitmap->ReleaseReference();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2074,7 +2074,8 @@ fDesktop->UnlockSingleWindow();
|
|||||||
fDesktop->EventDispatcher().SetDragMessage(dragMessage,
|
fDesktop->EventDispatcher().SetDragMessage(dragMessage,
|
||||||
bitmap, offset);
|
bitmap, offset);
|
||||||
fDesktop->LockSingleWindow();
|
fDesktop->LockSingleWindow();
|
||||||
bitmap->ReleaseReference();
|
if (bitmap != NULL)
|
||||||
|
bitmap->ReleaseReference();
|
||||||
}
|
}
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user