#ifdef WIN32
// memccpy() is standard in POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD, C23.
// Microsoft supports it, but apparently complains if we use it.
- #pragma warning(disable : 4996)
+ #undef memccpy
+ #define memccpy _memccpy
#endif
/** Chain-copies a string with truncation and efficiency (compared to strlcat()).
*/
size_t dp__strlcat(char *dst, const char *src, size_t dsize, const char *func, unsigned line)
{
- char *p = (char *)memchr(dst, '\0', dsize) ?: dst;
- size_t offset = p - dst;
+ size_t offset;
+ char *p = (char *)memchr(dst, '\0', dsize);
+ if (!p)
+ p = dst;
+ offset = p - dst;
return dp__strlcpy(p, src, dsize - offset, func, line) + offset;
}