realloc case Reference: /n/atom/patch/applied/rdstrrealloc Date: Sat May 3 06:04:42 CES 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/libbio/brdstr.c Sat May 3 06:04:36 2014 +++ /sys/src/libbio/brdstr.c Sat May 3 06:04:37 2014 @@ -6,10 +6,11 @@ badd(char *p, int *np, char *data, int ndata, int delim, int nulldelim) { int n; + char *oldp; n = *np; - p = realloc(p, n+ndata+1); - if(p){ + p = realloc(oldp = p, n+ndata+1); + if(p != nil){ memmove(p+n, data, ndata); n += ndata; if(n>0 && nulldelim && p[n-1]==delim) @@ -17,6 +18,9 @@ else p[n] = '\0'; *np = n; + }else{ + *np = 0; + free(oldp); } return p; }