Win32OperatingSystem.st
changeset 22111 66d61db0d982
parent 22054 bb2019124bed
child 22112 9e8e22f501f9
--- a/Win32OperatingSystem.st	Wed Jul 26 11:24:23 2017 +0200
+++ b/Win32OperatingSystem.st	Wed Jul 26 12:13:46 2017 +0200
@@ -8364,35 +8364,35 @@
     int i, l;
 
     if (__isStringLike(aStringOrSymbol)) {
-	l = __stringSize(aStringOrSymbol);
-	if (l > ENV_BUFSIZE-1)
-	    goto badArgument;
-	for (i=0; i<l; i++) {
-	    _varName[i] = __stringVal(aStringOrSymbol)[i];
-	}
+        l = __stringSize(aStringOrSymbol);
+        if (l > ENV_BUFSIZE-1)
+            goto badArgument;
+        for (i=0; i<l; i++) {
+            _varName[i] = __stringVal(aStringOrSymbol)[i];
+        }
     } else if (__isUnicode16String(aStringOrSymbol)) {
-	l = __unicode16StringSize(aStringOrSymbol);
-	if (l > ENV_BUFSIZE-1)
-	    goto badArgument;
-	for (i=0; i<l; i++) {
-	    _varName[i] = __unicode16StringVal(aStringOrSymbol)[i];
-	}
+        l = __unicode16StringSize(aStringOrSymbol);
+        if (l > ENV_BUFSIZE-1)
+            goto badArgument;
+        for (i=0; i<l; i++) {
+            _varName[i] = __unicode16StringVal(aStringOrSymbol)[i];
+        }
     } else {
-	goto badArgument;
+        goto badArgument;
     }
     _varName[l] = 0;
 
     nNeeded = GetEnvironmentVariableW(_varName, buff, ENV_BUFSIZE);
-    if (nNeeded > sizeof(buff)) {
-	WCHAR *buff2;
-
-	buff2 = (char *)malloc(nNeeded * sizeof(WCHAR));
-	GetEnvironmentVariableW(_varName, buff2, nNeeded);
-	ret = __mkStringOrU16String_maxlen(buff2, nNeeded);
-	free(buff2);
+    if (nNeeded > ENV_BUFSIZE) {
+        WCHAR *buff2;
+
+        buff2 = (WCHAR *)malloc(nNeeded+1 * sizeof(WCHAR));
+        GetEnvironmentVariableW(_varName, buff2, nNeeded);
+        ret = __mkStringOrU16String_maxlen(buff2, nNeeded);
+        free(buff2);
     } else if (nNeeded > 0) {
-	ret = __mkStringOrU16String_maxlen(buff, nNeeded);
-	// console_printf("getenv() -> %"_lx_"\n", (INT)ret);
+        ret = __mkStringOrU16String_maxlen(buff, nNeeded);
+        // console_printf("getenv() -> %"_lx_"\n", (INT)ret);
     }
     RETURN (ret);