}
+#if ! HAVE_STRNLEN
+static size_t
+strnlen (const char *s,
+ size_t n)
+{
+ const char *e;
+
+ e = memchr (s, '\0', n);
+ if (NULL == e)
+ return n;
+ return e - s;
+}
+#endif
+
+
/**
* Dup partially a string (same semantics as strndup).
*
{
char *res;
+ if (0 == len)
+ return GNUNET_strdup ("");
GNUNET_assert_at (str != NULL, filename, linenumber);
- len = GNUNET_MIN (len, strlen (str));
+ len = strnlen (str, len);
res = GNUNET_xmalloc_ (len + 1, filename, linenumber);
memcpy (res, str, len);
/* res[len] = '\0'; 'malloc' zeros out anyway */