summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/util/u_string.h24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/util/u_string.h b/src/gallium/auxiliary/util/u_string.h
index cc7992d7391..ed15981f1a5 100644
--- a/src/gallium/auxiliary/util/u_string.h
+++ b/src/gallium/auxiliary/util/u_string.h
@@ -48,6 +48,21 @@
extern "C" {
#endif
+#ifdef _GNU_SOURCE
+
+#define util_strchrnul strchrnul
+
+#else
+
+static INLINE char *
+util_strchrnul(const char *s, char c)
+{
+ for (; *s && *s != c; ++s);
+
+ return (char *)s;
+}
+
+#endif
#ifdef WIN32
@@ -72,12 +87,9 @@ util_sprintf(char *str, const char *format, ...)
static INLINE char *
util_strchr(const char *s, char c)
{
- while(*s) {
- if(*s == c)
- return (char *)s;
- ++s;
- }
- return NULL;
+ char *p = util_strchrnul(s, c);
+
+ return *p ? p : NULL;
}
static INLINE char*