diff options
author | jbj <jbj> | 2009-01-25 17:38:53 +0000 |
---|---|---|
committer | jbj <jbj> | 2009-01-25 17:38:53 +0000 |
commit | 5604abb251be340e0d2f86a1870a0fbbd0f3f30f (patch) | |
tree | 325e8f48ac78da747f7eeafad5c37b69a8025c7d /poptconfig.c | |
parent | a0fbf70d53308e73e0092848d479e409b6f584c4 (diff) | |
download | libpopt-5604abb251be340e0d2f86a1870a0fbbd0f3f30f.tar.gz |
- poptReadFile: permit NULL if return values are not desired.
Diffstat (limited to 'poptconfig.c')
-rw-r--r-- | poptconfig.c | 17 |
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 @*/ |