diff options
Diffstat (limited to 'libsbutil/sb_memory.c')
-rw-r--r-- | libsbutil/sb_memory.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libsbutil/sb_memory.c b/libsbutil/sb_memory.c index 23d74af..40a4762 100644 --- a/libsbutil/sb_memory.c +++ b/libsbutil/sb_memory.c @@ -73,6 +73,22 @@ __xstrdup(const char *str, const char *file, const char *func, size_t line) return ret; } +#ifndef HAVE_STRNDUP +static inline char *sb_strndup(const char *str, size_t n) +{ + size_t r; + for (r = 0; r < n; ++r) + if (!str[r]) + break; + + char *ret = xmalloc(r + 1); + memcpy(ret, str, r); + ret[r] = '\0'; + return ret; +} +# define strndup sb_strndup +#endif + char * __xstrndup(const char *str, size_t size, const char *file, const char *func, size_t line) { |