Win32OperatingSystem.st
changeset 24771 c2ac84744237
parent 24543 eb3802830398
child 24898 77318c4b1205
--- a/Win32OperatingSystem.st	Mon Sep 09 00:58:10 2019 +0200
+++ b/Win32OperatingSystem.st	Mon Sep 09 14:45:03 2019 +0200
@@ -10173,11 +10173,11 @@
 
 randomBytesInto:bufferOrInteger
     "If bufferOrInteger is a String or a ByteArray,
-	fill a given buffer with random bytes from the RtlGenRandom function
-	and nswer the buffer.
+        fill a given buffer with random bytes from the RtlGenRandom function
+        and answer the buffer.
 
      If bufferOrInteger is a SmallInteger,
-	return this many bytes (max 4) as a SmallInteger.
+        return this many bytes (max 4 for 32-bit ST or 8 for 64-bit ST) as a SmallInteger.
 
      Return nil on error (and raise PrimitiveFailure).
 
@@ -10192,42 +10192,42 @@
     unsigned char *__buffer;
     int __bufferSize;
     int __useLocalBuffer = 0;
-    unsigned int __localBuffer = 0;
+    unsigned INT __localBuffer = 0;
 
     if (__isSmallInteger(bufferOrInteger)) {
-	__useLocalBuffer = 1;
-	__buffer = (unsigned char *)&__localBuffer;
-	__bufferSize = __smallIntegerVal(bufferOrInteger);
-	if (__bufferSize > sizeof(INT))
-	    __bufferSize = sizeof(INT);
+        __useLocalBuffer = 1;
+        __buffer = (unsigned char *)&__localBuffer;
+        __bufferSize = __smallIntegerVal(bufferOrInteger);
+        if (__bufferSize > sizeof(INT))
+            __bufferSize = sizeof(INT);
     } else if (__isString(bufferOrInteger)) {
-	__buffer = __stringVal(bufferOrInteger);
-	__bufferSize = __stringSize(bufferOrInteger);
+        __buffer = __stringVal(bufferOrInteger);
+        __bufferSize = __stringSize(bufferOrInteger);
     } else if (__isByteArray(bufferOrInteger)) {
-	__buffer = __byteArrayVal(bufferOrInteger);
-	__bufferSize = __byteArraySize(bufferOrInteger);
+        __buffer = __byteArrayVal(bufferOrInteger);
+        __bufferSize = __byteArraySize(bufferOrInteger);
     } else {
-	goto error;
+        goto error;
     }
 
     if (P_RtlGenRandom == 0) {
-	HINSTANCE hAdvapi32 = LoadLibrary("advapi32.dll");
-	// console_printf("hAdvapi32: %x\n", hAdvapi32);
-	if (hAdvapi32) {
-	    P_RtlGenRandom = (BOOL (__stdcall *)(PVOID , ULONG))
-				GetProcAddress(hAdvapi32,
-				"SystemFunction036");
-	    // console_printf("P_RtlGenRandom: %x\n", P_RtlGenRandom);
-	    if (P_RtlGenRandom == 0) {
-		goto error;
-	    }
-	}
+        HINSTANCE hAdvapi32 = LoadLibrary("advapi32.dll");
+        // console_printf("hAdvapi32: %x\n", hAdvapi32);
+        if (hAdvapi32) {
+            P_RtlGenRandom = (BOOL (__stdcall *)(PVOID , ULONG))
+                                GetProcAddress(hAdvapi32,
+                                "SystemFunction036");
+            // console_printf("P_RtlGenRandom: %x\n", P_RtlGenRandom);
+            if (P_RtlGenRandom == 0) {
+                goto error;
+            }
+        }
     }
     if ((*P_RtlGenRandom)(__buffer, __bufferSize)) {
-	if (__useLocalBuffer) {
-	    RETURN(__mkSmallInteger(__localBuffer & _MAX_INT));
-	}
-	RETURN (bufferOrInteger);
+        if (__useLocalBuffer) {
+            RETURN(__mkSmallInteger(__localBuffer & _MAX_INT));
+        }
+        RETURN (bufferOrInteger);
     }
 error: ;
 %}.
@@ -10236,9 +10236,13 @@
 
     "
      self randomBytesInto:(ByteArray new:4)
+     self randomBytesInto:(ByteArray new:8)
      self randomBytesInto:4
+     self randomBytesInto:8
      self randomBytesInto:1
     "
+
+    "Modified (format): / 09-09-2019 / 14:42:11 / Stefan Vogel"
 !
 
 setEnvironment:aStringOrSymbol to:newValueString