From: Alex Riesen Date: Thu, 03 May 2007 09:06:05 GMT Subject: Re: [PATCH] Make xstrndup common Message-ID: <81b0412b0705030206u3a6b8a46qfd98ccf597d3c96e@mail.gmail.com> In-Reply-To: On 5/3/07, Daniel Barkalow wrote: > +static inline char *xstrndup(const char *str, int len) > +{ > + char *ret; > + int i; > + for (i = 0; i < len && str[i]; i++) > + ; > + ret = xmalloc(i + 1); > + strncpy(ret, str, i); > + ret[i] = '\0'; > + return ret; > +} I'd suggest using platform-optimized memchr: static inline char *xstrndup(const char *s, int len) { char *p = memchr(s, 0, len); int n = p ? p - s: len; p = xmalloc(n + 1); memcpy(p, s, n); p[n] = '\0'; return p; }