summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/libbio/brdstr.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/src/libbio/brdstr.c b/sys/src/libbio/brdstr.c
index a1b14f885..d749795d2 100644
--- a/sys/src/libbio/brdstr.c
+++ b/sys/src/libbio/brdstr.c
@@ -6,9 +6,11 @@ static char*
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 @@ badd(char *p, int *np, char *data, int ndata, int delim, int nulldelim)
else
p[n] = '\0';
*np = n;
- }
+ }else
+ free(oldp);
return p;
}