Bugfixing the x86_64 port
[tpg/acess2.git] / Kernel / lib.c
index a7cffd6..586a2e8 100644 (file)
@@ -232,7 +232,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                        pad = ' ';
                
                // - Minimum length
-               if(c == '*') {
+               if(c == '*') {  // Dynamic length
                        minSize = val;
                        val = va_arg(args, Uint);
                        c = *__format++;
@@ -270,14 +270,14 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                {
                case 'd':
                case 'i':
-                       #if BITS == 32
-                       if( (isLongLong && val >> 63) || (!isLongLong && val >> 31) ) {
-                       #else
-                       if( (Sint)val < 0 ) {
-                       #endif
+                       if( isLongLong && val >> 63 ) {
                                PUTCH('-');
                                val = -val;
                        }
+                       else if( !isLongLong && val >> 31 ) {
+                               PUTCH('-');
+                               val = -(Sint32)val;
+                       }
                        itoa(p, val, 10, minSize, pad);
                        goto printString;
                case 'u':
@@ -300,7 +300,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                
                // String - Null Terminated Array
                case 's':
-                       p = (char*)(Uint)val;
+                       p = (char*)(tVAddr)val;
                printString:
                        if(!p)          p = "(null)";
                        len = strlen(p);
@@ -310,7 +310,7 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                        break;
                
                case 'C':       // Non-Null Terminated Character Array
-                       p = (char*)(Uint)val;
+                       p = (char*)(tVAddr)val;
                        if(!p)  goto printString;
                        while(minSize--)        PUTCH(*p++);
                        break;

UCC git Repository :: git.ucc.asn.au