mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-21 10:19:03 +03:00
LibC: Fix strtol() not populating `endptr' for valid strings
We were not writing anything out to the `endptr` pointer if a number was successfully parsed from the input string. Fixes #460.
This commit is contained in:
parent
a20f3c6647
commit
266b9cb654
Notes:
sideshowbarker
2024-07-19 12:38:15 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/266b9cb6544
@ -352,7 +352,8 @@ long strtol(const char* str, char** endptr, int base)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const char* estr = str + strlen(str) - 1;
|
size_t length = strlen(str);
|
||||||
|
const char* estr = str + length - 1;
|
||||||
long track = 1;
|
long track = 1;
|
||||||
long num = 0;
|
long num = 0;
|
||||||
while (estr >= str) {
|
while (estr >= str) {
|
||||||
@ -362,12 +363,14 @@ long strtol(const char* str, char** endptr, int base)
|
|||||||
digit_value = 10 + (*estr - 'A');
|
digit_value = 10 + (*estr - 'A');
|
||||||
num += (track *= base) / base * digit_value;
|
num += (track *= base) / base * digit_value;
|
||||||
} else {
|
} else {
|
||||||
if (endptr != NULL)
|
if (endptr)
|
||||||
*endptr = const_cast<char*>(estr);
|
*endptr = const_cast<char*>(estr);
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
estr--;
|
estr--;
|
||||||
}
|
}
|
||||||
|
if (endptr)
|
||||||
|
*endptr = const_cast<char*>(str + length);
|
||||||
return num * sign;
|
return num * sign;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user