Fix fallback implementations of SDL_strchr and SDL_strrchr for '\0'

strchr and strrchr return a pointer to the first/last occurrence of a
character in a string, or NULL if the character is not found. According
to the C standard, the final null terminator is part of the string, and
it should thus be possible to get a pointer to the final null with
these functions. The fallback implementations of SDL_strchr and
SDL_strrchr would always return NULL if trying to find '\0', and this
commit fixes that.
This commit is contained in:
Dav999-v 2022-07-04 16:42:46 +02:00 committed by Ryan C. Gordon
parent fcb99d7830
commit 51f75b8b30

View File

@ -695,6 +695,9 @@ SDL_strchr(const char *string, int c)
} }
++string; ++string;
} }
if (c == '\0') {
return (char *) string;
}
return NULL; return NULL;
#endif /* HAVE_STRCHR */ #endif /* HAVE_STRCHR */
} }
@ -707,7 +710,7 @@ SDL_strrchr(const char *string, int c)
#elif defined(HAVE_RINDEX) #elif defined(HAVE_RINDEX)
return SDL_const_cast(char*,rindex(string, c)); return SDL_const_cast(char*,rindex(string, c));
#else #else
const char *bufp = string + SDL_strlen(string) - 1; const char *bufp = string + SDL_strlen(string);
while (bufp >= string) { while (bufp >= string) {
if (*bufp == c) { if (*bufp == c) {
return (char *) bufp; return (char *) bufp;