shithub: riscv

Download patch

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;
 }