mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
osd/modules: Cleaned up most macOS deprecation warnings up to and including 10.13. [R. Belmont]
* This raises the hard minimum macOS and SDK versions to 10.13. * In practice, the minimum since 0.252 has been macOS 11 Big Sur. * 10.13/10.14/10.15 can be built and run with this unsupported patch: https://gist.github.com/rb6502/8a1736ee3775f998e8e71faa47ae4b59 The patch works for me, but no guarantees are offered and it may break at any time.
This commit is contained in:
parent
3d57b7d120
commit
9a446ca92b
@ -160,7 +160,7 @@ void debugger_osx::wait_for_debugger(device_t &device, bool firststop)
|
||||
}
|
||||
|
||||
// get and process messages
|
||||
NSEvent *ev = [NSApp nextEventMatchingMask:NSAnyEventMask
|
||||
NSEvent *ev = [NSApp nextEventMatchingMask:NSEventMaskAny
|
||||
untilDate:[NSDate distantFuture]
|
||||
inMode:NSDefaultRunLoopMode
|
||||
dequeue:YES];
|
||||
@ -236,7 +236,7 @@ void debugger_osx::build_menus()
|
||||
[[debugMenu addItemWithTitle:@"Hard Reset"
|
||||
action:@selector(debugHardReset:)
|
||||
keyEquivalent:[NSString stringWithFormat:@"%C", (short)NSF3FunctionKey]]
|
||||
setKeyEquivalentModifierMask:NSShiftKeyMask];
|
||||
setKeyEquivalentModifierMask:NSEventModifierFlagShift];
|
||||
|
||||
NSMenu *const runMenu = [[NSMenu alloc] initWithTitle:@"Run"];
|
||||
item = [[NSApp mainMenu] insertItemWithTitle:@"Run"
|
||||
@ -290,7 +290,7 @@ void debugger_osx::build_menus()
|
||||
[[runMenu addItemWithTitle:@"Step Out"
|
||||
action:@selector(debugStepOut:)
|
||||
keyEquivalent:[NSString stringWithFormat:@"%C", (short)NSF10FunctionKey]]
|
||||
setKeyEquivalentModifierMask:NSShiftKeyMask];
|
||||
setKeyEquivalentModifierMask:NSEventModifierFlagShift];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -142,19 +142,28 @@
|
||||
NSRect const available = [[NSScreen mainScreen] visibleFrame];
|
||||
NSSize const regCurrent = [regScroll frame].size;
|
||||
NSSize const regSize = [NSScrollView frameSizeForContentSize:[regView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[regScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[regScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
NSSize const dasmCurrent = [dasmScroll frame].size;
|
||||
NSSize const dasmSize = [NSScrollView frameSizeForContentSize:[dasmView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[dasmScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[dasmScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
NSSize const consoleCurrent = [consoleContainer frame].size;
|
||||
NSSize consoleSize = [NSScrollView frameSizeForContentSize:[consoleView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[consoleScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[consoleScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
NSRect windowFrame = [window frame];
|
||||
NSSize adjustment;
|
||||
|
||||
|
@ -764,8 +764,8 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
|
||||
- (void)mouseDown:(NSEvent *)event {
|
||||
NSPoint const location = [self convertPoint:[event locationInWindow] fromView:nil];
|
||||
NSUInteger const modifiers = [event modifierFlags];
|
||||
view->process_click(((modifiers & NSCommandKeyMask) && [[self window] isMainWindow]) ? DCK_RIGHT_CLICK
|
||||
: (modifiers & NSAlternateKeyMask) ? DCK_MIDDLE_CLICK
|
||||
view->process_click(((modifiers & NSEventModifierFlagCommand) && [[self window] isMainWindow]) ? DCK_RIGHT_CLICK
|
||||
: (modifiers & NSEventModifierFlagOption) ? DCK_MIDDLE_CLICK
|
||||
: DCK_LEFT_CLICK,
|
||||
[self convertLocation:location]);
|
||||
}
|
||||
@ -776,8 +776,8 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
|
||||
NSPoint const location = [self convertPoint:[event locationInWindow] fromView:nil];
|
||||
NSUInteger const modifiers = [event modifierFlags];
|
||||
if (view->cursor_supported()
|
||||
&& !(modifiers & NSAlternateKeyMask)
|
||||
&& (!(modifiers & NSCommandKeyMask) || ![[self window] isMainWindow]))
|
||||
&& !(modifiers & NSEventModifierFlagOption)
|
||||
&& (!(modifiers & NSEventModifierFlagCommand) || ![[self window] isMainWindow]))
|
||||
{
|
||||
view->set_cursor_position([self convertLocation:location]);
|
||||
view->set_cursor_visible(true);
|
||||
@ -804,34 +804,34 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
|
||||
|
||||
if ([str length] == 1)
|
||||
{
|
||||
if (modifiers & NSNumericPadKeyMask)
|
||||
if (modifiers & NSEventModifierFlagNumericPad)
|
||||
{
|
||||
switch ([str characterAtIndex:0])
|
||||
{
|
||||
case NSUpArrowFunctionKey:
|
||||
if (modifiers & NSCommandKeyMask)
|
||||
if (modifiers & NSEventModifierFlagCommand)
|
||||
view->process_char(DCH_CTRLHOME);
|
||||
else
|
||||
view->process_char(DCH_UP);
|
||||
return;
|
||||
case NSDownArrowFunctionKey:
|
||||
if (modifiers & NSCommandKeyMask)
|
||||
if (modifiers & NSEventModifierFlagCommand)
|
||||
view->process_char(DCH_CTRLEND);
|
||||
else
|
||||
view->process_char(DCH_DOWN);
|
||||
return;
|
||||
case NSLeftArrowFunctionKey:
|
||||
if (modifiers & NSCommandKeyMask)
|
||||
if (modifiers & NSEventModifierFlagCommand)
|
||||
[self typeCharacterAndScrollToCursor:DCH_HOME];
|
||||
else if (modifiers & NSAlternateKeyMask)
|
||||
else if (modifiers & NSEventModifierFlagOption)
|
||||
[self typeCharacterAndScrollToCursor:DCH_CTRLLEFT];
|
||||
else
|
||||
[self typeCharacterAndScrollToCursor:DCH_LEFT];
|
||||
return;
|
||||
case NSRightArrowFunctionKey:
|
||||
if (modifiers & NSCommandKeyMask)
|
||||
if (modifiers & NSEventModifierFlagCommand)
|
||||
[self typeCharacterAndScrollToCursor:DCH_END];
|
||||
else if (modifiers & NSAlternateKeyMask)
|
||||
else if (modifiers & NSEventModifierFlagOption)
|
||||
[self typeCharacterAndScrollToCursor:DCH_CTRLRIGHT];
|
||||
else
|
||||
[self typeCharacterAndScrollToCursor:DCH_RIGHT];
|
||||
@ -841,18 +841,18 @@ static void debugwin_view_update(debug_view &view, void *osdprivate)
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (modifiers & NSFunctionKeyMask)
|
||||
else if (modifiers & NSEventModifierFlagFunction)
|
||||
{
|
||||
switch ([str characterAtIndex:0])
|
||||
{
|
||||
case NSPageUpFunctionKey:
|
||||
if (modifiers & NSAlternateKeyMask)
|
||||
if (modifiers & NSEventModifierFlagOption)
|
||||
{
|
||||
view->process_char(DCH_PUP);
|
||||
return;
|
||||
}
|
||||
case NSPageDownFunctionKey:
|
||||
if (modifiers & NSAlternateKeyMask)
|
||||
if (modifiers & NSEventModifierFlagOption)
|
||||
{
|
||||
view->process_char(DCH_PDOWN);
|
||||
return;
|
||||
|
@ -79,7 +79,7 @@ NSString *const MAMESaveDebuggerConfigurationNotification = @"MAMESaveDebuggerCo
|
||||
[[stepMenu addItemWithTitle:@"Out"
|
||||
action:@selector(debugStepOut:)
|
||||
keyEquivalent:[NSString stringWithFormat:@"%C", (short)NSF10FunctionKey]]
|
||||
setKeyEquivalentModifierMask:NSShiftKeyMask];
|
||||
setKeyEquivalentModifierMask:NSEventModifierFlagShift];
|
||||
|
||||
NSMenuItem *resetParentItem = [menu addItemWithTitle:@"Reset" action:NULL keyEquivalent:@""];
|
||||
NSMenu *resetMenu = [[NSMenu alloc] initWithTitle:@"Reset"];
|
||||
@ -92,7 +92,7 @@ NSString *const MAMESaveDebuggerConfigurationNotification = @"MAMESaveDebuggerCo
|
||||
[[resetMenu addItemWithTitle:@"Hard"
|
||||
action:@selector(debugHardReset:)
|
||||
keyEquivalent:[NSString stringWithFormat:@"%C", (short)NSF3FunctionKey]]
|
||||
setKeyEquivalentModifierMask:NSShiftKeyMask];
|
||||
setKeyEquivalentModifierMask:NSEventModifierFlagShift];
|
||||
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
|
||||
@ -127,7 +127,7 @@ NSString *const MAMESaveDebuggerConfigurationNotification = @"MAMESaveDebuggerCo
|
||||
NSPopUpButton *actionButton = [[NSPopUpButton alloc] initWithFrame:frame pullsDown:YES];
|
||||
[actionButton setTitle:@""];
|
||||
[actionButton addItemWithTitle:@""];
|
||||
[actionButton setBezelStyle:NSShadowlessSquareBezelStyle];
|
||||
[actionButton setBezelStyle:NSBezelStyleShadowlessSquare];
|
||||
[actionButton setFocusRingType:NSFocusRingTypeNone];
|
||||
[[actionButton cell] setArrowPosition:NSPopUpArrowAtCenter];
|
||||
[[self class] addCommonActionItems:[actionButton menu]];
|
||||
@ -140,10 +140,10 @@ NSString *const MAMESaveDebuggerConfigurationNotification = @"MAMESaveDebuggerCo
|
||||
return nil;
|
||||
|
||||
window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 320, 240)
|
||||
styleMask:(NSTitledWindowMask |
|
||||
NSClosableWindowMask |
|
||||
NSMiniaturizableWindowMask |
|
||||
NSResizableWindowMask)
|
||||
styleMask:(NSWindowStyleMaskTitled |
|
||||
NSWindowStyleMaskClosable |
|
||||
NSWindowStyleMaskMiniaturizable |
|
||||
NSWindowStyleMaskResizable)
|
||||
backing:NSBackingStoreBuffered
|
||||
defer:YES];
|
||||
[window setReleasedWhenClosed:NO];
|
||||
|
@ -54,14 +54,14 @@
|
||||
- (NSTextField *)makeLabel:(NSString *)text {
|
||||
NSTextField *const result = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 14)];
|
||||
[result setAutoresizingMask:(NSViewMaxYMargin | NSViewMaxXMargin)];
|
||||
[[result cell] setControlSize:NSSmallControlSize];
|
||||
[[result cell] setControlSize:NSControlSizeSmall];
|
||||
[result setEditable:NO];
|
||||
[result setSelectable:NO];
|
||||
[result setBezeled:NO];
|
||||
[result setBordered:NO];
|
||||
[result setDrawsBackground:NO];
|
||||
[result setAlignment:NSRightTextAlignment];
|
||||
[result setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]];
|
||||
[result setAlignment:NSTextAlignmentRight];
|
||||
[result setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSControlSizeSmall]]];
|
||||
[result setStringValue:text];
|
||||
[result sizeToFit];
|
||||
return result;
|
||||
@ -71,14 +71,14 @@
|
||||
- (NSTextField *)makeField:(NSString *)text {
|
||||
NSTextField *const result = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 14)];
|
||||
[result setAutoresizingMask:(NSViewWidthSizable | NSViewMaxYMargin)];
|
||||
[[result cell] setControlSize:NSSmallControlSize];
|
||||
[[result cell] setControlSize:NSControlSizeSmall];
|
||||
[result setEditable:NO];
|
||||
[result setSelectable:YES];
|
||||
[result setBezeled:NO];
|
||||
[result setBordered:NO];
|
||||
[result setDrawsBackground:NO];
|
||||
[result setAlignment:NSLeftTextAlignment];
|
||||
[result setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]];
|
||||
[result setAlignment:NSTextAlignmentLeft];
|
||||
[result setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSControlSizeSmall]]];
|
||||
[result setStringValue:text];
|
||||
[result sizeToFit];
|
||||
return result;
|
||||
@ -210,9 +210,12 @@
|
||||
|
||||
// create a scroll view for holding everything
|
||||
NSSize desired = [NSScrollView frameSizeForContentSize:[contentView frame].size
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:NSNoBorder];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType: NSNoBorder
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
[window setContentSize:desired];
|
||||
contentScroll = [[NSScrollView alloc] initWithFrame:[[window contentView] bounds]];
|
||||
[contentScroll setDrawsBackground:NO];
|
||||
|
@ -161,9 +161,12 @@
|
||||
|
||||
// calculate the optimal size for everything
|
||||
NSSize const desired = [NSScrollView frameSizeForContentSize:NSMakeSize(480, 320)
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[devicesScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[devicesScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
[self cascadeWindowWithDesiredSize:desired forView:devicesScroll];
|
||||
|
||||
// don't forget the result
|
||||
|
@ -75,7 +75,7 @@
|
||||
item = [menu addItemWithTitle:@"Disable Breakpoint"
|
||||
action:@selector(debugToggleBreakpointEnable:)
|
||||
keyEquivalent:[NSString stringWithFormat:@"%C", (short)NSF9FunctionKey]];
|
||||
[item setKeyEquivalentModifierMask:NSShiftKeyMask];
|
||||
[item setKeyEquivalentModifierMask:NSEventModifierFlagShift];
|
||||
|
||||
[menu addItem:[NSMenuItem separatorItem]];
|
||||
|
||||
@ -214,7 +214,7 @@
|
||||
action:@selector(debugToggleBreakpointEnable:)
|
||||
keyEquivalent:[NSString stringWithFormat:@"%C", (short)NSF9FunctionKey]
|
||||
atIndex:index++];
|
||||
[disableItem setKeyEquivalentModifierMask:NSShiftKeyMask];
|
||||
[disableItem setKeyEquivalentModifierMask:NSEventModifierFlagShift];
|
||||
|
||||
NSMenu *runMenu = [[menu itemWithTitle:@"Run"] submenu];
|
||||
NSMenuItem *runItem;
|
||||
|
@ -49,7 +49,7 @@
|
||||
expressionFrame.size.width,
|
||||
0)];
|
||||
[subviewButton setAutoresizingMask:(NSViewWidthSizable | NSViewMinXMargin | NSViewMinYMargin)];
|
||||
[subviewButton setBezelStyle:NSShadowlessSquareBezelStyle];
|
||||
[subviewButton setBezelStyle:NSBezelStyleShadowlessSquare];
|
||||
[subviewButton setFocusRingType:NSFocusRingTypeNone];
|
||||
[subviewButton setFont:defaultFont];
|
||||
[subviewButton setTarget:self];
|
||||
@ -120,9 +120,12 @@
|
||||
|
||||
// calculate the optimal size for everything
|
||||
NSSize const desired = [NSScrollView frameSizeForContentSize:[dasmView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[dasmScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[dasmScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
[self cascadeWindowWithDesiredSize:desired forView:dasmScroll];
|
||||
|
||||
// don't forget the result
|
||||
|
@ -43,9 +43,12 @@
|
||||
// calculate the optimal size for everything
|
||||
{
|
||||
NSSize desired = [NSScrollView frameSizeForContentSize:[logView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[logScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[logScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
|
||||
// this thing starts with no content, so its prefered height may be very small
|
||||
desired.height = std::max(desired.height, CGFloat(240));
|
||||
|
@ -46,7 +46,7 @@
|
||||
// create the subview popup
|
||||
subviewButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 19)];
|
||||
[subviewButton setAutoresizingMask:(NSViewWidthSizable | NSViewMinXMargin | NSViewMinYMargin)];
|
||||
[subviewButton setBezelStyle:NSShadowlessSquareBezelStyle];
|
||||
[subviewButton setBezelStyle:NSBezelStyleShadowlessSquare];
|
||||
[subviewButton setFocusRingType:NSFocusRingTypeNone];
|
||||
[subviewButton setFont:defaultFont];
|
||||
[subviewButton setTarget:self];
|
||||
@ -118,9 +118,12 @@
|
||||
|
||||
// calculate the optimal size for everything
|
||||
NSSize const desired = [NSScrollView frameSizeForContentSize:[memoryView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[memoryScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[memoryScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
[self cascadeWindowWithDesiredSize:desired forView:memoryScroll];
|
||||
|
||||
// don't forget the result
|
||||
|
@ -33,7 +33,7 @@
|
||||
// create the subview popup
|
||||
subviewButton = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 19)];
|
||||
[subviewButton setAutoresizingMask:(NSViewWidthSizable | NSViewMinYMargin)];
|
||||
[subviewButton setBezelStyle:NSShadowlessSquareBezelStyle];
|
||||
[subviewButton setBezelStyle:NSBezelStyleShadowlessSquare];
|
||||
[subviewButton setFocusRingType:NSFocusRingTypeNone];
|
||||
[subviewButton setFont:defaultFont];
|
||||
[subviewButton setTarget:self];
|
||||
@ -139,17 +139,26 @@
|
||||
|
||||
// calculate the optimal size for everything
|
||||
NSSize const breakDesired = [NSScrollView frameSizeForContentSize:[breakView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[breakScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[breakScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
NSSize const watchDesired = [NSScrollView frameSizeForContentSize:[watchView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[watchScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[watchScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
NSSize const registerDesired = [NSScrollView frameSizeForContentSize:[registerView maximumFrameSize]
|
||||
hasHorizontalScroller:YES
|
||||
hasVerticalScroller:YES
|
||||
borderType:[registerScroll borderType]];
|
||||
horizontalScrollerClass:[NSScroller class]
|
||||
verticalScrollerClass:[NSScroller class]
|
||||
borderType:[registerScroll borderType]
|
||||
controlSize: NSControlSizeRegular
|
||||
scrollerStyle: NSScrollerStyleOverlay
|
||||
];
|
||||
NSSize const desired = NSMakeSize(std::max({ breakDesired.width, watchDesired.width, registerDesired.width }),
|
||||
std::max({ breakDesired.height, watchDesired.height, registerDesired.height }));
|
||||
[self cascadeWindowWithDesiredSize:desired forView:tabs];
|
||||
|
@ -927,16 +927,17 @@ CFPropertyListRef sound_coreaudio::load_property_list(char const *name) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CFStringRef msg = nullptr;
|
||||
CFPropertyListRef const result = CFPropertyListCreateFromXMLData(
|
||||
CFErrorRef msg = nullptr;
|
||||
CFPropertyListRef const result = CFPropertyListCreateWithData(
|
||||
nullptr,
|
||||
data,
|
||||
kCFPropertyListImmutable,
|
||||
nullptr,
|
||||
&msg);
|
||||
CFRelease(data);
|
||||
if ((nullptr == result) || (nullptr != msg))
|
||||
{
|
||||
std::unique_ptr<char []> const buf = (nullptr != msg) ? convert_cfstring_to_utf8(msg) : nullptr;
|
||||
std::unique_ptr<char []> const buf = (nullptr != msg) ? convert_cfstring_to_utf8(CFErrorCopyDescription(msg)) : nullptr;
|
||||
if (nullptr != msg)
|
||||
CFRelease(msg);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user