--- a/Win32OperatingSystem.st Thu Jan 31 15:28:43 2019 +0100
+++ b/Win32OperatingSystem.st Tue Feb 12 13:11:27 2019 +0100
@@ -16999,7 +16999,14 @@
break;
case REG_QWORD: // only REG_QWORD_LITTLE_ENDIAN present (no need for shifts)
+ //console_printf("quickData.qWord value: %llu\n", quickData.qWord);
+#if __POINTER_SIZE__ == 8
+ // code for 64 bit
retVal = __MKULARGEINT(quickData.qWord);
+#else
+ // code for 32 bit
+ retVal = __MKULARGEINT64(quickData.qWord);
+#endif
break;
case REG_MULTI_SZ:
@@ -17230,10 +17237,19 @@
dataSize = __byteArraySize(data);
} else if (__Class(data) == LargeInteger) {
valueType = REG_QWORD;
- longVal = __longIntVal(data);
- if (longVal) {
- dataPointer = &longVal;
- dataSize = sizeof(longVal);
+
+#if __POINTER_SIZE__ == 8
+ // code for 64 bit
+ longVal = __unsignedLongIntVal(data);
+ if (longVal) {
+ dataPointer = &longVal;
+ dataSize = sizeof(longVal);
+#else
+ // code for 32 bit
+ if (__unsignedLong64IntVal(data, &longVal)) {
+ dataPointer = &longVal;
+ dataSize = sizeof(longVal);
+#endif
} else {
dataOk = 0;
}