diff options
| author | Andrey A. Chernov <ache@FreeBSD.org> | 2002-08-07 07:02:37 +0000 |
|---|---|---|
| committer | Andrey A. Chernov <ache@FreeBSD.org> | 2002-08-07 07:02:37 +0000 |
| commit | dfb18183bea742af9131fdcbc48dfeb0a722ef83 (patch) | |
| tree | addee5985d5983aca258964b9c52d2d551894bef /lib/libc/nls/msgcat.c | |
| parent | 04a0be1f972a4207d4145620cc84dabe617f15ad (diff) | |
Notes
Diffstat (limited to 'lib/libc/nls/msgcat.c')
| -rw-r--r-- | lib/libc/nls/msgcat.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/libc/nls/msgcat.c b/lib/libc/nls/msgcat.c index 570dd102f93d..2b80d914ba18 100644 --- a/lib/libc/nls/msgcat.c +++ b/lib/libc/nls/msgcat.c @@ -320,6 +320,7 @@ catclose(catd) static char *_errowner = "Message Catalog System"; #define CORRUPT() { \ + (void)fclose(cat->fp); \ (void)fprintf(stderr, "%s: corrupt file.", _errowner); \ free(cat); \ NLRETERR(EFTYPE); \ @@ -327,6 +328,7 @@ static char *_errowner = "Message Catalog System"; #define NOSPACE() { \ saverr = errno; \ + (void)fclose(cat->fp); \ (void)fprintf(stderr, "%s: no more memory.", _errowner); \ free(cat); \ errno = saverr; \ @@ -379,12 +381,14 @@ loadCat(catpath) CORRUPT(); if (header.majorVer != MCMajorVer) { + (void)fclose(cat->fp); free(cat); (void)fprintf(stderr, "%s: %s is version %ld, we need %ld.\n", _errowner, catpath, header.majorVer, MCMajorVer); NLRETERR(EFTYPE); } if (header.numSets <= 0) { + (void)fclose(cat->fp); free(cat); (void)fprintf(stderr, "%s: %s has %ld sets!\n", _errowner, catpath, header.numSets); @@ -421,7 +425,9 @@ loadCat(catpath) int res; if ((res = loadSet(cat, set)) <= 0) { + saverr = errno; __nls_free_resources(cat, i); + errno = saverr; if (res < 0) NOSPACE(); CORRUPT(); |
