]> git.sesse.net Git - vlc/commitdiff
directory: fix memory leaks
authorHannes Domani <ssbssa@yahoo.de>
Tue, 2 Sep 2014 18:13:28 +0000 (20:13 +0200)
committerTristan Matthews <le.businessman@gmail.com>
Thu, 11 Sep 2014 14:44:14 +0000 (10:44 -0400)
Signed-off-by: Tristan Matthews <le.businessman@gmail.com>
modules/access/directory.c

index cf9396c8ef53c4aa850366abadd3eab802930c8d..5c471a299ee75aef5f234541163411de61837ece 100644 (file)
@@ -220,18 +220,23 @@ static bool directory_push (access_sys_t *p_sys, DIR *handle, char *psz_uri)
 #ifdef HAVE_OPENAT
     struct stat st;
     if (fstat (dirfd (handle), &st))
-        goto error;
+        goto error_filev;
     p_dir->device = st.st_dev;
     p_dir->inode = st.st_ino;
 #else
     p_dir->path = make_path (psz_uri);
     if (p_dir->path == NULL)
-        goto error;
+        goto error_filev;
 #endif
 
     p_sys->current = p_dir;
     return true;
 
+error_filev:
+    for (int i = 0; i < p_dir->filec; i++)
+        free (p_dir->filev[i]);
+    free (p_dir->filev);
+
 error:
     closedir (handle);
     free (p_dir);
@@ -249,6 +254,8 @@ static bool directory_pop (access_sys_t *p_sys)
     p_sys->current = p_old->parent;
     closedir (p_old->handle);
     free (p_old->uri);
+    for (int i = 0; i < p_old->filec; i++)
+        free (p_old->filev[i]);
     free (p_old->filev);
 #ifndef HAVE_OPENAT
     free (p_old->path);