Просмотр исходного кода

LibC: Always assign the offset pointer to endptr in strto{u,}ll()

This patch makes strto{u,}l{l,}() behave more to-spec about endptr.
"If endptr is not NULL, strtoull stores the address of the first invalid
character in *endptr."
AnotherTest 5 лет назад
Родитель
Сommit
6b1ed26e6a
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      Libraries/LibC/stdlib.cpp

+ 6 - 0
Libraries/LibC/stdlib.cpp

@@ -929,6 +929,9 @@ long long strtoll(const char* str, char** endptr, int base)
         return 0;
         return 0;
     }
     }
 
 
+    if (endptr)
+        *endptr = parse_ptr;
+
     if (overflow) {
     if (overflow) {
         errno = ERANGE;
         errno = ERANGE;
         if (sign != Sign::Negative) {
         if (sign != Sign::Negative) {
@@ -1003,6 +1006,9 @@ unsigned long long strtoull(const char* str, char** endptr, int base)
         return 0;
         return 0;
     }
     }
 
 
+    if (endptr)
+        *endptr = parse_ptr;
+
     if (overflow) {
     if (overflow) {
         errno = ERANGE;
         errno = ERANGE;
         return LONG_LONG_MAX;
         return LONG_LONG_MAX;