From 646de34f5e83994f121892394776c60cb01a2706 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Fri, 6 Dec 2013 14:48:40 +0400 Subject: [PATCH] unix: fix various memory leaks and undef behavior Kindly suggested by `cppcheck`. --- src/unix/darwin.c | 2 +- src/unix/fsevents.c | 4 +++- src/unix/signal.c | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/unix/darwin.c b/src/unix/darwin.c index c1655994..bc282e79 100644 --- a/src/unix/darwin.c +++ b/src/unix/darwin.c @@ -75,7 +75,7 @@ int uv_exepath(char* buffer, size_t* size) { result = _NSGetExecutablePath(buffer, &usize); if (result) return result; - path = (char*)malloc(2 * PATH_MAX); + path = malloc(2 * PATH_MAX); fullpath = realpath(buffer, path); if (fullpath == NULL) { SAVE_ERRNO(free(path)); diff --git a/src/unix/fsevents.c b/src/unix/fsevents.c index 20c7ae05..7faa1562 100644 --- a/src/unix/fsevents.c +++ b/src/unix/fsevents.c @@ -590,7 +590,7 @@ static int uv__fsevents_loop_init(uv_loop_t* loop) { err = uv_mutex_init(&loop->cf_mutex); if (err) - return err; + goto fail_mutex_init; err = uv_sem_init(&loop->cf_sem, 0); if (err) @@ -660,6 +660,8 @@ fail_fsevent_sem_init: fail_sem_init: uv_mutex_destroy(&loop->cf_mutex); + +fail_mutex_init: free(state); return err; } diff --git a/src/unix/signal.c b/src/unix/signal.c index 8c0d62f3..0b7a405c 100644 --- a/src/unix/signal.c +++ b/src/unix/signal.c @@ -348,6 +348,7 @@ static void uv__signal_event(uv_loop_t* loop, int r; bytes = 0; + end = 0; do { r = read(loop->signal_pipefd[0], buf + bytes, sizeof(buf) - bytes);