diff options
author | midipix <writeonce@midipix.org> | 2016-05-22 19:02:31 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-05-23 04:15:23 -0400 |
commit | e64108c8293703cada52b1d9860bb3a642536bef (patch) | |
tree | 6e70272ff2184c02884e5f0240a66cd3745fb173 | |
parent | 3643b93a2477d87b5769ebfd799942685ab1b725 (diff) | |
download | slibtool-e64108c8293703cada52b1d9860bb3a642536bef.tar.bz2 slibtool-e64108c8293703cada52b1d9860bb3a642536bef.tar.xz |
link mode: properly handle empty dependency files.
-rw-r--r-- | src/logic/slbt_exec_link.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index 4c78757..cdda42b 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -124,7 +124,11 @@ static int slbt_get_deps_meta( depsmeta->infolen += st.st_size; depsmeta->infolen++; - for (deplib=fgets(deplibs,st.st_size+1,fdeps); deplib; ) { + deplib = st.st_size + ? fgets(deplibs,st.st_size+1,fdeps) + : 0; + + for (; deplib; ) { depsmeta->depscnt++; deplib = fgets(deplibs,st.st_size+1,fdeps); } @@ -372,8 +376,9 @@ static int slbt_exec_link_adjust_argument_vector( if (dpath) { if (!stat(dpath,&st) && (fdeps = fopen(dpath,"r"))) { - dep = fgets(darg,st.st_size+1,fdeps); - *aarg = darg; + dep = st.st_size + ? fgets(darg,st.st_size+1,fdeps) + : 0; for (; dep; ) { *aarg++ = darg; @@ -495,7 +500,11 @@ static int slbt_exec_link_create_dep_file( if (!(fdeps = fopen(depfile,"r"))) return -1; - for (deplib=fgets(deplibs,st.st_size+1,fdeps); deplib; ) { + deplib = st.st_size + ? fgets(deplibs,st.st_size+1,fdeps) + : 0; + + for (; deplib; ) { if (fprintf(ectx->fdeps,"%s",deplib) < 0) { fclose(fdeps); return -1; |