]> git.sesse.net Git - vlc/commitdiff
picture_pool_NewFromFormat: improve error handling
authorRémi Denis-Courmont <remi@remlab.net>
Sat, 1 Nov 2014 09:02:00 +0000 (11:02 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Sat, 1 Nov 2014 09:10:05 +0000 (11:10 +0200)
src/misc/picture_pool.c

index 14d8f0940d82a0a74968c31dc5405e377dcd496f..3c080b3274aa89185edd9588ccc38df91aac9179 100644 (file)
@@ -189,13 +189,15 @@ picture_pool_t *picture_pool_New(unsigned count, picture_t *const *tab)
 picture_pool_t *picture_pool_NewFromFormat(const video_format_t *fmt,
                                            unsigned count)
 {
-    picture_t *picture[count];
+    picture_t *picture[count ? count : 1];
+    unsigned i;
 
-    for (unsigned i = 0; i < count; i++) {
+    for (i = 0; i < count; i++) {
         picture[i] = picture_NewFromFormat(fmt);
-        if (!picture[i])
+        if (picture[i] == NULL)
             goto error;
     }
+
     picture_pool_t *pool = picture_pool_New(count, picture);
     if (!pool)
         goto error;
@@ -203,11 +205,8 @@ picture_pool_t *picture_pool_NewFromFormat(const video_format_t *fmt,
     return pool;
 
 error:
-    for (unsigned i = 0; i < count; i++) {
-        if (!picture[i])
-            break;
-        picture_Release(picture[i]);
-    }
+    while (i > 0)
+        picture_Release(picture[--i]);
     return NULL;
 }