cmd: Fix a memory leak (Coverity 904).

This commit is contained in:
James Hawkins 2009-03-22 14:32:22 -07:00 committed by Alexandre Julliard
parent 0b74259f9d
commit 474276d569

View File

@ -699,8 +699,8 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
WCHAR *searchIn; WCHAR *searchIn;
WCHAR *searchFor; WCHAR *searchFor;
s = WCMD_strdupW(endOfVar + 1);
if (equalspos == NULL) return start+1; if (equalspos == NULL) return start+1;
s = WCMD_strdupW(endOfVar + 1);
/* Null terminate both strings */ /* Null terminate both strings */
thisVar[strlenW(thisVar)-1] = 0x00; 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); searchFor = WCMD_strdupW(colonpos+1);
CharUpperBuff(searchFor, strlenW(colonpos+1)); CharUpperBuff(searchFor, strlenW(colonpos+1));
/* Handle wildcard case */ /* Handle wildcard case */
if (*(colonpos+1) == '*') { if (*(colonpos+1) == '*') {
/* Search for string to replace */ /* Search for string to replace */
@ -723,7 +722,6 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
strcpyW(start, replacewith); strcpyW(start, replacewith);
strcatW(start, thisVarContents + (found-searchIn) + strlenW(searchFor+1)); strcatW(start, thisVarContents + (found-searchIn) + strlenW(searchFor+1));
strcatW(start, s); strcatW(start, s);
free(s);
} else { } else {
/* Copy as it */ /* Copy as it */
strcpyW(start, thisVarContents); strcpyW(start, thisVarContents);
@ -749,6 +747,7 @@ static WCHAR *WCMD_expand_envvar(WCHAR *start, WCHAR *forVar, WCHAR *forVal) {
thisVarContents + (lastFound-searchIn)); thisVarContents + (lastFound-searchIn));
strcatW(outputposn, s); strcatW(outputposn, s);
} }
free(s);
free(searchIn); free(searchIn);
free(searchFor); free(searchFor);
return start; return start;