mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 15:50:07 +01:00
0.10 fix for crashes on OSX 10.6
strnlen is available at build-time but not at runtime, causing a crash. 0.11 drops support for 10.6, so this is not needed in master.
This commit is contained in:
@@ -88,8 +88,6 @@ typedef u_int SOCKET;
|
|||||||
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
|
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_DECL_STRNLEN == 0
|
size_t strnlen_int( const char *start, size_t max_len);
|
||||||
size_t strnlen( const char *start, size_t max_len);
|
|
||||||
#endif // HAVE_DECL_STRNLEN
|
|
||||||
|
|
||||||
#endif // BITCOIN_COMPAT_H
|
#endif // BITCOIN_COMPAT_H
|
||||||
|
|||||||
@@ -7,12 +7,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
// OSX 10.6 is missing strnlen at runtime, but builds targetting it will still
|
||||||
#if HAVE_DECL_STRNLEN == 0
|
// succeed. Define our own version here to avoid a crash.
|
||||||
size_t strnlen( const char *start, size_t max_len)
|
size_t strnlen_int( const char *start, size_t max_len)
|
||||||
{
|
{
|
||||||
const char *end = (const char *)memchr(start, '\0', max_len);
|
const char *end = (const char *)memchr(start, '\0', max_len);
|
||||||
|
|
||||||
return end ? (size_t)(end - start) : max_len;
|
return end ? (size_t)(end - start) : max_len;
|
||||||
}
|
}
|
||||||
#endif // HAVE_DECL_STRNLEN
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ CMessageHeader::CMessageHeader(const char* pszCommand, unsigned int nMessageSize
|
|||||||
|
|
||||||
std::string CMessageHeader::GetCommand() const
|
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
|
bool CMessageHeader::IsValid() const
|
||||||
|
|||||||
Reference in New Issue
Block a user