X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Flib.c;h=586a2e8fb9d128d182b17ab5e1267950b1269d38;hb=320aba7c7d009697ba5e51ac684722b56d696bea;hp=116dce6150a6db8b1302ce69b782207c148c0fa5;hpb=b98fbd4e9c71447d81fc9bd643fb174c76346e0f;p=tpg%2Facess2.git diff --git a/Kernel/lib.c b/Kernel/lib.c index 116dce61..586a2e8f 100644 --- a/Kernel/lib.c +++ b/Kernel/lib.c @@ -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,10 +270,14 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args) { case 'd': case 'i': - if( (isLongLong && val >> 63) || (!isLongLong && val >> 31) ) { + 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': @@ -296,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); @@ -306,9 +310,8 @@ 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++); while(minSize--) PUTCH(*p++); break; @@ -688,6 +691,9 @@ Uint rand(void) */ int CheckString(char *String) { + if( !MM_GetPhysAddr( (tVAddr)String ) ) + return 0; + // Check 1st page if( MM_IsUser( (tVAddr)String ) ) {