Usermode/libc - Fix edge case crash with realloc on last block
[tpg/acess2.git] / Usermode / Libraries / libc.so_src / strtoi.c
index 9326fb8..de7f725 100644 (file)
@@ -54,9 +54,9 @@ unsigned long long strtoull(const char *str, char **end, int base)
                        if( '0' <= *str && *str <= '9' )
                                next = *str - '0';
                        if( 'A' <= *str && *str <= 'A'+base-10-1 )
-                               next = *str - 'A';
+                               next = *str - 'A' + 10;
                        if( 'a' <= *str && *str <= 'a'+base-10-1 )
-                               next = *str - 'a';
+                               next = *str - 'a' + 10;
                }
                if( next < 0 )
                        break;
@@ -132,3 +132,19 @@ int atoi(const char *str)
        }
        return tmp;
 }
+
+long atol(const char *str)
+{
+       long long       tmp = strtoll(str, NULL, 0);
+       if( tmp > LONG_MAX || tmp < LONG_MIN ) {
+               errno = ERANGE;
+               return (tmp > LONG_MAX) ? LONG_MAX : LONG_MIN;
+       }
+       return tmp;
+}
+
+long long atoll(const char *str)
+{
+       long long       tmp = strtoll(str, NULL, 0);
+       return tmp;
+}

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