fs: cleanup uv__fs_scandir
The `out` section is only reachable now if `scandir` returns 0. PR-URL: https://github.com/libuv/libuv/pull/1189 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
parent
8f43417f0e
commit
d251dee33b
@ -380,7 +380,6 @@ static int uv__fs_scandir_sort(UV_CONST_DIRENT** a, UV_CONST_DIRENT** b) {
|
||||
|
||||
static ssize_t uv__fs_scandir(uv_fs_t* req) {
|
||||
uv__dirent_t **dents;
|
||||
int saved_errno;
|
||||
int n;
|
||||
|
||||
dents = NULL;
|
||||
@ -389,29 +388,18 @@ static ssize_t uv__fs_scandir(uv_fs_t* req) {
|
||||
/* NOTE: We will use nbufs as an index field */
|
||||
req->nbufs = 0;
|
||||
|
||||
if (n == 0)
|
||||
goto out; /* osx still needs to deallocate some memory */
|
||||
else if (n == -1)
|
||||
if (n == 0) {
|
||||
/* OS X still needs to deallocate some memory.
|
||||
* Memory was allocated using the system allocator, so use free() here.
|
||||
*/
|
||||
free(dents);
|
||||
dents = NULL;
|
||||
} else if (n == -1) {
|
||||
return n;
|
||||
}
|
||||
|
||||
req->ptr = dents;
|
||||
|
||||
return n;
|
||||
|
||||
out:
|
||||
saved_errno = errno;
|
||||
if (dents != NULL) {
|
||||
int i;
|
||||
|
||||
/* Memory was allocated using the system allocator, so use free() here. */
|
||||
for (i = 0; i < n; i++)
|
||||
free(dents[i]);
|
||||
free(dents);
|
||||
}
|
||||
errno = saved_errno;
|
||||
|
||||
req->ptr = NULL;
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user