summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/locale/collate.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/libc/locale/collate.c b/lib/libc/locale/collate.c
index c7e6c12..44c3eb7 100644
--- a/lib/libc/locale/collate.c
+++ b/lib/libc/locale/collate.c
@@ -92,23 +92,26 @@ __collate_load_tables(const char *encoding)
if ((TMP_substitute_table =
malloc(sizeof(__collate_substitute_table))) == NULL) {
+ saverr = errno;
(void)fclose(fp);
- errno = ENOMEM;
+ errno = saverr;
return (_LDP_ERROR);
}
if ((TMP_char_pri_table =
malloc(sizeof(__collate_char_pri_table))) == NULL) {
+ saverr = errno;
free(TMP_substitute_table);
(void)fclose(fp);
- errno = ENOMEM;
+ errno = saverr;
return (_LDP_ERROR);
}
if ((TMP_chain_pri_table =
malloc(sizeof(__collate_chain_pri_table))) == NULL) {
+ saverr = errno;
free(TMP_substitute_table);
free(TMP_char_pri_table);
(void)fclose(fp);
- errno = ENOMEM;
+ errno = saverr;
return (_LDP_ERROR);
}
OpenPOWER on IntegriCloud