diff options
| author | Tharre <tharre3@gmail.com> | 2016-10-28 00:02:22 +0200 | 
|---|---|---|
| committer | Tharre <tharre3@gmail.com> | 2016-10-28 00:02:22 +0200 | 
| commit | d030418896e0f74ed65bb69c2a0c058a3c6288f1 (patch) | |
| tree | 89f4dbcf8d8795d975be2a698ffbbf0e89d6e076 /src | |
| parent | 15465e8b518d9413c11dcdcad712a6a51b3ebde2 (diff) | |
| download | redo-d030418896e0f74ed65bb69c2a0c058a3c6288f1.tar.gz redo-d030418896e0f74ed65bb69c2a0c058a3c6288f1.tar.xz redo-d030418896e0f74ed65bb69c2a0c058a3c6288f1.zip  | |
Fix reference to free'd memory in handle_c()
Diffstat (limited to 'src')
| -rw-r--r-- | src/build.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/src/build.c b/src/build.c index be739c9..01f8314 100644 --- a/src/build.c +++ b/src/build.c @@ -555,13 +555,12 @@ static int handle_c(dep_info *dep) {  	/* make sure all prereq dependencies are met */  	char *prereq_path = concat(2, dep->path, ".prereq");  	FILE *prereqfd = fopen(prereq_path, "rb"); -	free(prereq_path);  	if (!prereqfd) {  		if (errno != ENOENT)  			fatal("redo: failed to open %s", prereq_path);  		/* no .prereq file exists; so we don't do anything */ -		goto exit3; +		goto exit4;  	}  	dsv_init(&ctx_prereq, 2); @@ -590,6 +589,8 @@ static int handle_c(dep_info *dep) {  	dsv_free(&ctx_prereq);  	fclose(prereqfd); +exit4: +	free(prereq_path);  exit3:  	fclose(targetfd);  exit2:  | 
