CID:192 RESOURCE_LEAK - new argv is not freed
authorNelson Ferreira <nelson.ferreira@ieee.org>
Sun, 18 Sep 2011 06:25:34 +0000 (02:25 -0400)
committerNelson Ferreira <nelson.ferreira@ieee.org>
Sun, 18 Sep 2011 06:25:34 +0000 (02:25 -0400)
    * src/emacs.c(make_docfile): free newargv after the return of
    execv (which will be never if successful, but, if execv fails no
    memory will be leaked.)

src/emacs.c

index 397936f..7c692c4 100644 (file)
@@ -818,6 +818,7 @@ make_docfile(int c, char **v)
        size_t edlen = XSTRING_LENGTH(Vexec_directory);
        char mdocfile[edlen+countof(make_docfile_prog)];
        char **newargv = xnew_array_and_zero(char*, c), **p;
+       int  ret = -1;
 
        /* set up the program call */
        xstrncpy(mdocfile,
@@ -840,7 +841,9 @@ make_docfile(int c, char **v)
        for (char **o = p, **n = &newargv[1]; *o;) {
                *n++ = *o++;
        }
-       return execv(mdocfile, newargv);
+       ret = execv(mdocfile, newargv);
+       xfree(newargv);
+       return ret;
 }
 
 static inline void*