ref: f9b6c4c5a3f10cf4b7166e40b111596c1d6b5102
parent: e610c573d7e2807bacd0a0be1e9cbcef2d3b2eea
author: ftrvxmtrx <devnull@localhost>
date: Thu May 1 23:58:38 EDT 2014
bio: do not leak memory if realloc fails
--- a/sys/src/libbio/brdstr.c
+++ b/sys/src/libbio/brdstr.c
@@ -6,9 +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);
+ oldp = p;
+ p = realloc(oldp, n+ndata+1);
if(p){
memmove(p+n, data, ndata);
n += ndata;
@@ -17,7 +19,8 @@
else
p[n] = '\0';
*np = n;
- }
+ }else
+ free(oldp);
return p;
}