From fa2a7dc236920c3d97737449984bbc453e1ed675 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Mon, 31 Jan 2022 20:48:00 +0100 Subject: [PATCH] Gracefully handle lack of bundle on macOS should fix https://github.com/minetest/minetest/issues/10170 --- source/Irrlicht/CIrrDeviceOSX.mm | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/source/Irrlicht/CIrrDeviceOSX.mm b/source/Irrlicht/CIrrDeviceOSX.mm index dea86d94..066539ca 100644 --- a/source/Irrlicht/CIrrDeviceOSX.mm +++ b/source/Irrlicht/CIrrDeviceOSX.mm @@ -553,7 +553,6 @@ CIrrDeviceMacOSX::CIrrDeviceMacOSX(const SIrrlichtCreationParameters& param) IsActive(true), IsFullscreen(false), IsShiftDown(false), IsControlDown(false), IsResizable(false) { struct utsname name; - NSString *path; #ifdef _DEBUG setDebugName("CIrrDeviceMacOSX"); @@ -568,27 +567,31 @@ CIrrDeviceMacOSX::CIrrDeviceMacOSX(const SIrrlichtCreationParameters& param) [[NSAutoreleasePool alloc] init]; [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; [NSApp setDelegate:(id)[[[CIrrDelegateOSX alloc] initWithDevice:this] autorelease]]; - + // Create menu - + NSString* bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; - + if (bundleName == nil) + bundleName = @"Irrlicht"; + NSMenu* mainMenu = [[[NSMenu alloc] initWithTitle:@"MainMenu"] autorelease]; NSMenu* menu = [[[NSMenu alloc] initWithTitle:bundleName] autorelease]; NSMenuItem* menuItem = [mainMenu addItemWithTitle:bundleName action:nil keyEquivalent:@""]; [mainMenu setSubmenu:menu forItem:menuItem]; menuItem = [menu addItemWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@"q"]; [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask]; - + [NSApp setMainMenu:mainMenu]; [NSApp finishLaunching]; } - path = [[NSBundle mainBundle] bundlePath]; - path = [path stringByAppendingString:@"/Contents/Resources"]; - chdir([path fileSystemRepresentation]); - [path release]; + NSString *path = [[NSBundle mainBundle] bundlePath]; + if (path != nil) { + path = [path stringByAppendingString:@"/Contents/Resources"]; + chdir([path fileSystemRepresentation]); + [path release]; + } } uname(&name);