On Mon, Jun 15, 2015 at 10:22:27AM +0100, Nicholas Marriott wrote: > What about diff and ssh and file? They all use the a copy of the same > xmalloc.c. > >
Personally, I would recommend that "xstrdup" just calls strdup(3), as Theo said: it's 100.00% portable. But I don't think I'm the right person who should answer that question. ;) Regards, --F. > > On Mon, Jun 15, 2015 at 10:00:01AM +0200, Fritjof Bornebusch wrote: > > Hi, > > > > thanks for the hint. > > This one should do the trick. > > > > > > > > > > Index: xmalloc.c > > =================================================================== > > RCS file: /cvs/src/usr.bin/rcs/xmalloc.c,v > > retrieving revision 1.9 > > diff -u -p -r1.9 xmalloc.c > > --- xmalloc.c 13 Jun 2015 20:15:21 -0000 1.9 > > +++ xmalloc.c 15 Jun 2015 07:52:15 -0000 > > @@ -68,13 +68,10 @@ xreallocarray(void *ptr, size_t nmemb, s > > char * > > xstrdup(const char *str) > > { > > - size_t len; > > char *cp; > > - > > - len = strlen(str) + 1; > > - cp = xmalloc(len); > > - if (strlcpy(cp, str, len) >= len) > > - errx(1, "xstrdup: string truncated"); > > + > > + if ((cp = strdup(str)) == NULL) > > + err(1, "xstrdup"); > > return cp; > > } > > >