posix: Solaris doesn't have strnlen either
diff --git a/src/posix.h b/src/posix.h
index 14c92b9..f529914 100644
--- a/src/posix.h
+++ b/src/posix.h
@@ -89,7 +89,12 @@ extern struct tm * p_gmtime_r (const time_t *timer, struct tm *result);
# include "unix/posix.h"
#endif
-#ifndef __MINGW32__
+#if defined(__MINGW32__) || defined(__sun)
+GIT_INLINE(size_t) p_strnlen(const char *s, size_t maxlen) {
+ const char *end = memchr(s, 0, maxlen);
+ return end ? (size_t)(end - s) : maxlen;
+}
+#else
# define p_strnlen strnlen
#endif
diff --git a/src/win32/mingw-compat.h b/src/win32/mingw-compat.h
index fe0abfb..7b97b48 100644
--- a/src/win32/mingw-compat.h
+++ b/src/win32/mingw-compat.h
@@ -19,11 +19,6 @@
# define S_IFLNK _S_IFLNK
# define S_ISLNK(m) (((m) & _S_IFMT) == _S_IFLNK)
-GIT_INLINE(size_t) p_strnlen(const char *s, size_t maxlen) {
- const char *end = memchr(s, 0, maxlen);
- return end ? (size_t)(end - s) : maxlen;
-}
-
#endif
#endif /* INCLUDE_mingw_compat__ */