summaryrefslogtreecommitdiff
path: root/poptconfig.c
diff options
context:
space:
mode:
authorjbj <jbj>2009-01-25 17:38:53 +0000
committerjbj <jbj>2009-01-25 17:38:53 +0000
commit5604abb251be340e0d2f86a1870a0fbbd0f3f30f (patch)
tree325e8f48ac78da747f7eeafad5c37b69a8025c7d /poptconfig.c
parenta0fbf70d53308e73e0092848d479e409b6f584c4 (diff)
downloadlibpopt-5604abb251be340e0d2f86a1870a0fbbd0f3f30f.tar.gz
- poptReadFile: permit NULL if return values are not desired.
Diffstat (limited to 'poptconfig.c')
-rw-r--r--poptconfig.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/poptconfig.c b/poptconfig.c
index 2ae77fb..6e42a27 100644
--- a/poptconfig.c
+++ b/poptconfig.c
@@ -209,17 +209,22 @@ int poptReadFile(const char * fn, char ** bp, size_t * nbp, int flags)
}
exit:
- if (rc == 0) {
- *bp = b;
- *nbp = (size_t) nb;
- } else {
+ if (rc != 0) {
/*@-usedef@*/
if (b)
free(b);
/*@=usedef@*/
- *bp = NULL;
- *nbp = 0;
+ b = NULL;
+ nb = 0;
}
+ if (bp)
+ *bp = b;
+/*@-usereleased@*/
+ else if (b)
+ free(b);
+/*@=usereleased@*/
+ if (nbp)
+ *nbp = (size_t)nb;
/*@-compdef -nullstate @*/ /* XXX cannot annotate char ** correctly */
return rc;
/*@=compdef =nullstate @*/