Author: pschweitzer Date: Sat May 16 12:13:12 2015 New Revision: 67772
URL: http://svn.reactos.org/svn/reactos?rev=67772&view=rev Log: [CRT] Properly copy va_list (ie, do it in a portable and corrrect way) and make sure it doesn't leak
Modified: trunk/reactos/lib/sdk/crt/process/process.c
Modified: trunk/reactos/lib/sdk/crt/process/process.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/process/process... ============================================================================== --- trunk/reactos/lib/sdk/crt/process/process.c [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/process/process.c [iso-8859-1] Sat May 16 12:13:12 2015 @@ -152,13 +152,14 @@ static _TCHAR* valisttosT(const _TCHAR* arg0, va_list alist, _TCHAR delim) { - va_list alist2 = alist; + va_list alist2; _TCHAR *ptr, *str; size_t len;
if (arg0 == NULL) return NULL;
+ va_copy(alist2, alist); ptr = (_TCHAR*)arg0; len = 0; do @@ -170,7 +171,10 @@
str = (_TCHAR*) malloc((len + 1) * sizeof(_TCHAR)); if (str == NULL) + { + va_end(alist2); return NULL; + }
ptr = str; do @@ -184,6 +188,7 @@ while(arg0 != NULL); *ptr = 0;
+ va_end(alist2); return str; }