Win32OperatingSystem.st
branchjv
changeset 23767 c0e32a3e2ca0
parent 23766 14192e6eeae8
child 24093 0f94f6c8c9d4
--- 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;
 	    }