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: |