From eac9c5450f6f78250eeb4f3a26bd5f053ab18fd4 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Thu, 30 Jul 2009 12:11:41 +0000 Subject: [PATCH] CreateBitmap(): Fail if it can not allocate bitmaps. In init_interface_kit(), check the return value of MenuPrivate::CreateBitmaps() and fail on error. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31964 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/InterfaceDefs.cpp | 8 ++++++-- src/kits/interface/MenuPrivate.cpp | 15 +++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index a42e8582b5..6b1383dc49 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -954,12 +954,16 @@ _init_interface_kit_() _init_global_fonts_(); BPrivate::gWidthBuffer = new BPrivate::WidthBuffer; - BPrivate::MenuPrivate::CreateBitmaps(); + status = BPrivate::MenuPrivate::CreateBitmaps(); + if (status != B_OK) + return status; _menu_info_ptr_ = &BMenu::sMenuInfo; status = get_menu_info(&BMenu::sMenuInfo); - + if (status != B_OK) + return status; + general_info.background_color = ui_color(B_PANEL_BACKGROUND_COLOR); general_info.mark_color.set_to(0, 0, 0); general_info.highlight_color = ui_color(B_CONTROL_HIGHLIGHT_COLOR); diff --git a/src/kits/interface/MenuPrivate.cpp b/src/kits/interface/MenuPrivate.cpp index 81b6927f3b..81ec8b6fbf 100644 --- a/src/kits/interface/MenuPrivate.cpp +++ b/src/kits/interface/MenuPrivate.cpp @@ -196,16 +196,19 @@ MenuPrivate::CreateBitmaps() { BRect smallRect(0, 0, 16, 10); BRect largeRect(0, 0, 21, 10); - - gMenuItemAlt = new BBitmap(smallRect, B_CMAP8); - gMenuItemControl = new BBitmap(smallRect, B_CMAP8); - gMenuItemOption = new BBitmap(smallRect, B_CMAP8); - gMenuItemShift = new BBitmap(largeRect, B_CMAP8); + try { + gMenuItemAlt = new BBitmap(smallRect, B_CMAP8); + gMenuItemControl = new BBitmap(smallRect, B_CMAP8); + gMenuItemOption = new BBitmap(smallRect, B_CMAP8); + gMenuItemShift = new BBitmap(largeRect, B_CMAP8); + } catch (...) { + return B_NO_MEMORY; + } gMenuItemAlt->ImportBits(kAltBits, sizeof(kAltBits), 17, 0, B_CMAP8); gMenuItemControl->ImportBits(kCtrlBits, sizeof(kCtrlBits), - 17, 0, B_CMAP8); + 17, 0, B_CMAP8); gMenuItemOption->ImportBits(kOptBits, sizeof(kOptBits), 17, 0, B_CMAP8); gMenuItemShift->ImportBits(kShiftBits, sizeof(kShiftBits),