]> git.sesse.net Git - vlc/commitdiff
macosx: fixed potential race condition
authorFelix Paul Kühne <fkuehne@videolan.org>
Mon, 16 Apr 2012 17:13:07 +0000 (19:13 +0200)
committerFelix Paul Kühne <fkuehne@videolan.org>
Mon, 16 Apr 2012 17:13:23 +0000 (19:13 +0200)
modules/gui/macosx/intf.m

index 87915bc3f0488e147d9cdda361b76cd9bfcf99a2..5d030242a3e8efb79b222dcc66fd6e249f13a428 100644 (file)
@@ -779,6 +779,7 @@ static VLCMain *_o_sharedMainInstance = nil;
 
     [o_msg_arr removeAllObjects];
     [o_msg_arr release];
+    o_msg_arr = NULL;
 
     [o_msg_lock release];
 
@@ -2001,36 +2002,39 @@ unsigned int CocoaKeyToVLC( unichar i_key )
 
 - (void)processReceivedlibvlcMessage:(const msg_item_t *) item ofType: (int)i_type withStr: (char *)str
 {
-    NSColor *o_white = [NSColor whiteColor];
-    NSColor *o_red = [NSColor redColor];
-    NSColor *o_yellow = [NSColor yellowColor];
-    NSColor *o_gray = [NSColor grayColor];
-    NSString * firstString, * secondString;
+    if (o_msg_arr)
+    {
+        NSColor *o_white = [NSColor whiteColor];
+        NSColor *o_red = [NSColor redColor];
+        NSColor *o_yellow = [NSColor yellowColor];
+        NSColor *o_gray = [NSColor grayColor];
+        NSString * firstString, * secondString;
 
-    NSColor * pp_color[4] = { o_white, o_red, o_yellow, o_gray };
-    static const char * ppsz_type[4] = { ": ", " error: ", " warning: ", " debug: " };
+        NSColor * pp_color[4] = { o_white, o_red, o_yellow, o_gray };
+        static const char * ppsz_type[4] = { ": ", " error: ", " warning: ", " debug: " };
 
-    NSDictionary *o_attr;
-    NSMutableAttributedString *o_msg_color;
+        NSDictionary *o_attr;
+        NSMutableAttributedString *o_msg_color;
 
-    [o_msg_lock lock];
+        [o_msg_lock lock];
 
-    if( [o_msg_arr count] + 2 > 600 )
-    {
-        [o_msg_arr removeObjectAtIndex: 0];
-        [o_msg_arr removeObjectAtIndex: 1];
-    }
-    firstString = [NSString stringWithFormat:@"%s%s", item->psz_module, ppsz_type[i_type]];
-    secondString = [NSString stringWithFormat:@"%@%s\n", firstString, str];
+        if( [o_msg_arr count] + 2 > 600 )
+        {
+            [o_msg_arr removeObjectAtIndex: 0];
+            [o_msg_arr removeObjectAtIndex: 1];
+        }
+        firstString = [NSString stringWithFormat:@"%s%s", item->psz_module, ppsz_type[i_type]];
+        secondString = [NSString stringWithFormat:@"%@%s\n", firstString, str];
 
-    o_attr = [NSDictionary dictionaryWithObject: pp_color[i_type]  forKey: NSForegroundColorAttributeName];
-    o_msg_color = [[NSMutableAttributedString alloc] initWithString: secondString attributes: o_attr];
-    o_attr = [NSDictionary dictionaryWithObject: pp_color[3] forKey: NSForegroundColorAttributeName];
-    [o_msg_color setAttributes: o_attr range: NSMakeRange( 0, [firstString length] )];
-    [o_msg_arr addObject: [o_msg_color autorelease]];
+        o_attr = [NSDictionary dictionaryWithObject: pp_color[i_type]  forKey: NSForegroundColorAttributeName];
+        o_msg_color = [[NSMutableAttributedString alloc] initWithString: secondString attributes: o_attr];
+        o_attr = [NSDictionary dictionaryWithObject: pp_color[3] forKey: NSForegroundColorAttributeName];
+        [o_msg_color setAttributes: o_attr range: NSMakeRange( 0, [firstString length] )];
+        [o_msg_arr addObject: [o_msg_color autorelease]];
 
-    b_msg_arr_changed = YES;
-    [o_msg_lock unlock];
+        b_msg_arr_changed = YES;
+        [o_msg_lock unlock];
+    }
 }
 
 - (IBAction)saveDebugLog:(id)sender