James Hawkins : cmd: Fix a memory leak (Coverity 904).

Alexandre Julliard julliard at winehq.org
Mon Mar 23 12:34:57 CDT 2009


Module: wine
Branch: master
Commit: 474276d5691337fbceaa62bf7b322c8761cea231
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=474276d5691337fbceaa62bf7b322c8761cea231

Author: James Hawkins <truiken at gmail.com>
Date:   Sun Mar 22 14:32:22 2009 -0700

cmd: Fix a memory leak (Coverity 904).

---

 programs/cmd/wcmdmain.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index f90ca8c..c58077b 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -699,8 +699,8 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
       WCHAR *searchIn;
       WCHAR *searchFor;
 
-      s = WCMD_strdupW(endOfVar + 1);
       if (equalspos == NULL) return start+1;
+      s = WCMD_strdupW(endOfVar + 1);
 
       /* Null terminate both strings */
       thisVar[strlenW(thisVar)-1] = 0x00;
@@ -712,7 +712,6 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
       searchFor = WCMD_strdupW(colonpos+1);
       CharUpperBuff(searchFor, strlenW(colonpos+1));
 
-
       /* Handle wildcard case */
       if (*(colonpos+1) == '*') {
         /* Search for string to replace */
@@ -723,7 +722,6 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
           strcpyW(start, replacewith);
           strcatW(start, thisVarContents + (found-searchIn) + strlenW(searchFor+1));
           strcatW(start, s);
-          free(s);
         } else {
           /* Copy as it */
           strcpyW(start, thisVarContents);
@@ -749,6 +747,7 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
                 thisVarContents + (lastFound-searchIn));
         strcatW(outputposn, s);
       }
+      free(s);
       free(searchIn);
       free(searchFor);
       return start;




More information about the wine-cvs mailing list