lib: Always set errno in hcreate_r

This could give a confusing error message if it failed and didn't set
errno.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Sean Anderson 2020-06-24 06:41:15 -04:00 committed by Andes
parent 038b13ee81
commit 60ffcf218f

View File

@ -110,8 +110,10 @@ int hcreate_r(size_t nel, struct hsearch_data *htab)
}
/* There is still another table active. Return with error. */
if (htab->table != NULL)
if (htab->table != NULL) {
__set_errno(EINVAL);
return 0;
}
/* Change nel to the first prime number not smaller as nel. */
nel |= 1; /* make odd */
@ -124,8 +126,10 @@ int hcreate_r(size_t nel, struct hsearch_data *htab)
/* allocate memory and zero out */
htab->table = (struct env_entry_node *)calloc(htab->size + 1,
sizeof(struct env_entry_node));
if (htab->table == NULL)
if (htab->table == NULL) {
__set_errno(ENOMEM);
return 0;
}
/* everything went alright */
return 1;