--- 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