[vlc-commits] macosx: dialogs provider: fix crash for question dialog and also improve robustness of other dialogs

David Fuhrmann git at videolan.org
Sat Jun 22 12:26:07 CEST 2013


vlc | branch: master | David Fuhrmann <david.fuhrmann at googlemail.com> | Sat Jun 22 12:21:12 2013 +0200| [528905b0140e349915ca5ab8215bc537f2e1d455] | committer: David Fuhrmann

macosx: dialogs provider: fix crash for question dialog and also improve robustness of other dialogs

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=528905b0140e349915ca5ab8215bc537f2e1d455
---

 modules/gui/macosx/coredialogs.m |   44 ++++++++++++++------------------------
 1 file changed, 16 insertions(+), 28 deletions(-)

diff --git a/modules/gui/macosx/coredialogs.m b/modules/gui/macosx/coredialogs.m
index 3850170..88db935 100644
--- a/modules/gui/macosx/coredialogs.m
+++ b/modules/gui/macosx/coredialogs.m
@@ -29,6 +29,10 @@
 /* for the icon in our custom error panel */
 #import <ApplicationServices/ApplicationServices.h>
 
+NSString *toNSStr(const char *str) {
+    return str != NULL ? @(str) : @"";
+}
+
 /*****************************************************************************
  * VLCCoreDialogProvider implementation
  *****************************************************************************/
@@ -87,7 +91,7 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
 {
     dialog_fatal_t *p_dialog = [o_value pointerValue];
 
-    [o_error_panel addError: @(p_dialog->title) withMsg: @(p_dialog->message)];
+    [o_error_panel addError: toNSStr(p_dialog->title) withMsg: toNSStr(p_dialog->message)];
     [o_error_panel showPanel];
 }
 
@@ -96,7 +100,7 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
     dialog_fatal_t *p_dialog = [o_value pointerValue];
     NSAlert *o_alert;
 
-    o_alert = [NSAlert alertWithMessageText: @(p_dialog->title) defaultButton: _NS("OK") alternateButton: nil otherButton: nil informativeTextWithFormat: @"%s", p_dialog->message];
+    o_alert = [NSAlert alertWithMessageText: toNSStr(p_dialog->title) defaultButton: _NS("OK") alternateButton: nil otherButton: nil informativeTextWithFormat: @"%s", p_dialog->message];
     [o_alert setAlertStyle: NSCriticalAlertStyle];
     [o_alert runModal];
 }
@@ -105,17 +109,9 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
 {
     dialog_question_t *p_dialog = [o_value pointerValue];
     NSAlert *o_alert;
-    NSString *o_yes, *o_no, *o_cancel;
     NSInteger i_returnValue = 0;
-
-    if (p_dialog->yes != NULL)
-        o_yes = @(p_dialog->yes);
-    if (p_dialog->no != NULL)
-        o_no = @(p_dialog->no);
-    if (p_dialog->cancel != NULL)
-        o_cancel = @(p_dialog->cancel);
-
-    o_alert = [NSAlert alertWithMessageText: @(p_dialog->title) defaultButton: o_yes alternateButton:o_no otherButton: o_cancel informativeTextWithFormat: @"%s", p_dialog->message];
+  
+    o_alert = [NSAlert alertWithMessageText: toNSStr(p_dialog->title) defaultButton: toNSStr(p_dialog->yes) alternateButton: toNSStr(p_dialog->no) otherButton: toNSStr(p_dialog->cancel) informativeTextWithFormat: @"%s", p_dialog->message];
     [o_alert setAlertStyle: NSInformationalAlertStyle];
     i_returnValue = [o_alert runModal];
 
@@ -132,9 +128,9 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
     dialog_login_t *p_dialog = [o_value pointerValue];
     NSInteger i_returnValue = 0;
 
-    [o_auth_title_txt setStringValue: @(p_dialog->title)];
-    [o_auth_win setTitle: @(p_dialog->title)];
-    [o_auth_description_txt setStringValue: @(p_dialog->message)];
+    [o_auth_title_txt setStringValue: toNSStr(p_dialog->title)];
+    [o_auth_win setTitle: toNSStr(p_dialog->title)];
+    [o_auth_description_txt setStringValue: toNSStr(p_dialog->message)];
     [o_auth_login_fld setStringValue: @""];
     [o_auth_pw_fld setStringValue: @""];
 
@@ -164,26 +160,18 @@ static VLCCoreDialogProvider *_o_sharedInstance = nil;
     b_progress_cancelled = NO;
 
     dialog_progress_bar_t *p_dialog = [o_value pointerValue];
-
     if (!p_dialog || b_progress_cancelled)
         return;
 
-    if (p_dialog->title != NULL)
-    {
-        [o_prog_win setTitle: @(p_dialog->title)];
-        [o_prog_title_txt setStringValue: @(p_dialog->title)];
-    } else {
-        [o_prog_win setTitle: @""];
-        [o_prog_title_txt setStringValue: @""];
-    }
+    [o_prog_win setTitle: toNSStr(p_dialog->title)];
+    [o_prog_title_txt setStringValue: toNSStr(p_dialog->title)];
+
     if (p_dialog->cancel != NULL)
         [o_prog_cancel_btn setTitle: @(p_dialog->cancel)];
     else
         [o_prog_cancel_btn setTitle: _NS("Cancel")];
-    if (p_dialog->message != NULL)
-        [o_prog_description_txt setStringValue: @(p_dialog->message)];
-    else
-        [o_prog_description_txt setStringValue: @""];
+
+    [o_prog_description_txt setStringValue: toNSStr(p_dialog->message)];
 
     if (VLCIntf)
         [self performSelector:@selector(showProgressDialog:) withObject: o_value afterDelay:3.00];



More information about the vlc-commits mailing list