aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compat.h4
-rw-r--r--src/compat/strnlen.cpp7
-rw-r--r--src/protocol.cpp2
3 files changed, 5 insertions, 8 deletions
diff --git a/src/compat.h b/src/compat.h
index dffd4ecf52..477dd2bfeb 100644
--- a/src/compat.h
+++ b/src/compat.h
@@ -88,8 +88,6 @@ typedef u_int SOCKET;
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
#endif
-#if HAVE_DECL_STRNLEN == 0
-size_t strnlen( const char *start, size_t max_len);
-#endif // HAVE_DECL_STRNLEN
+size_t strnlen_int( const char *start, size_t max_len);
#endif // BITCOIN_COMPAT_H
diff --git a/src/compat/strnlen.cpp b/src/compat/strnlen.cpp
index 7f3e159887..7dafd98c0b 100644
--- a/src/compat/strnlen.cpp
+++ b/src/compat/strnlen.cpp
@@ -7,12 +7,11 @@
#endif
#include <cstring>
-
-#if HAVE_DECL_STRNLEN == 0
-size_t strnlen( const char *start, size_t max_len)
+// OSX 10.6 is missing strnlen at runtime, but builds targetting it will still
+// succeed. Define our own version here to avoid a crash.
+size_t strnlen_int( const char *start, size_t max_len)
{
const char *end = (const char *)memchr(start, '\0', max_len);
return end ? (size_t)(end - start) : max_len;
}
-#endif // HAVE_DECL_STRNLEN
diff --git a/src/protocol.cpp b/src/protocol.cpp
index 72fdd753a8..f03d6e7589 100644
--- a/src/protocol.cpp
+++ b/src/protocol.cpp
@@ -40,7 +40,7 @@ CMessageHeader::CMessageHeader(const char* pszCommand, unsigned int nMessageSize
std::string CMessageHeader::GetCommand() const
{
- return std::string(pchCommand, pchCommand + strnlen(pchCommand, COMMAND_SIZE));
+ return std::string(pchCommand, pchCommand + strnlen_int(pchCommand, COMMAND_SIZE));
}
bool CMessageHeader::IsValid() const