]> git.sesse.net Git - vlc/blobdiff - modules/gui/macosx/playlist.m
Input access locking. Part one
[vlc] / modules / gui / macosx / playlist.m
index cadeb91fc3bf6f19ce44973ecc68f0f4d0fec4a2..85cff494182f6cd3e510a4b47de919972fbbc78d 100644 (file)
     if( [[o_tc identifier] isEqualToString:@"1"] )
     {
         /* sanity check to prevent the NSString class from crashing */
-        if( !EMPTY_STR( input_item_GetTitle( p_item->p_input ) ) )
+        char *psz_title =  input_item_GetTitle( p_item->p_input );
+        if( !EMPTY_STR( psz_title ) ) )
         {
-            o_value = [NSString stringWithUTF8String: input_item_GetTitle( p_item->p_input )];
+            o_value = [NSString stringWithUTF8String: psz_title )];
             if( o_value == NULL )
-                o_value = [NSString stringWithCString: input_item_GetTitle( p_item->p_input )];
+                o_value = [NSString stringWithCString: psz_title )];
         } 
-        else if( p_item->p_input->psz_name != NULL )
+        else
         {
-            o_value = [NSString stringWithUTF8String: p_item->p_input->psz_name];
-            if( o_value == NULL )
-                o_value = [NSString stringWithCString: p_item->p_input->psz_name];
+            char *psz_name = input_item_GetName( p_item->p_input );
+            if( psz_name != NULL )
+            {
+                o_value = [NSString stringWithUTF8String: psz_name];
+                if( o_value == NULL )
+                    o_value = [NSString stringWithCString: psz_name];
+            }
         }
+        free( psz_title );
+        free( psz_name );
     }
-    else if( [[o_tc identifier] isEqualToString:@"2"] && !EMPTY_STR( input_item_GetArtist( p_item->p_input ) ) )
-    {
-        o_value = [NSString stringWithUTF8String: input_item_GetArtist( p_item->p_input )];
-        if( o_value == NULL )
-            o_value = [NSString stringWithCString: input_item_GetArtist( p_item->p_input )];
-    }
-    else if( [[o_tc identifier] isEqualToString:@"3"] )
+    else
     {
-        char psz_duration[MSTRTIME_MAX_SIZE];
-        mtime_t dur = p_item->p_input->i_duration;
-        if( dur != -1 )
+        char *psz_artist = input_item_GetArtist( p_item->p_input );
+        if( [[o_tc identifier] isEqualToString:@"2"] && !EMPTY_STR( psz_artist ) )
         {
-            secstotimestr( psz_duration, dur/1000000 );
-            o_value = [NSString stringWithUTF8String: psz_duration];
+            o_value = [NSString stringWithUTF8String: psz_artist )];
+            if( o_value == NULL )
+                o_value = [NSString stringWithCString: psz_artist )];
         }
-        else
+        else if( [[o_tc identifier] isEqualToString:@"3"] )
         {
-            o_value = @"-:--:--";
+            char psz_duration[MSTRTIME_MAX_SIZE];
+            mtime_t dur = p_item->p_input->i_duration;
+            if( dur != -1 )
+            {
+                secstotimestr( psz_duration, dur/1000000 );
+                o_value = [NSString stringWithUTF8String: psz_duration];
+            }
+            else
+            {
+                o_value = @"-:--:--";
+            }
         }
+        free( psz_artist );
     }
 
     return( o_value );