summaryrefslogtreecommitdiff
path: root/lib/util/str_table.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util/str_table.c')
-rw-r--r--lib/util/str_table.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/lib/util/str_table.c b/lib/util/str_table.c
index 34aa70e..3554544 100644
--- a/lib/util/str_table.c
+++ b/lib/util/str_table.c
@@ -9,8 +9,8 @@
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
-#include <stdio.h>
+#include "sqfs/error.h"
#include "str_table.h"
#include "util.h"
@@ -41,10 +41,8 @@ static int strings_grow(str_table_t *table)
newsz = table->max_strings ? (table->max_strings * 2) : 16;
new = realloc(table->strings, sizeof(table->strings[0]) * newsz);
- if (new == NULL) {
- perror("growing string table");
- return -1;
- }
+ if (new == NULL)
+ return SQFS_ERROR_ALLOC;
table->strings = new;
table->max_strings = newsz;
@@ -58,10 +56,8 @@ int str_table_init(str_table_t *table, size_t size)
table->buckets = alloc_array(size, sizeof(table->buckets[0]));
table->num_buckets = size;
- if (table->buckets == NULL) {
- perror("initializing string table");
- return -1;
- }
+ if (table->buckets == NULL)
+ return SQFS_ERROR_ALLOC;
return 0;
}
@@ -91,6 +87,7 @@ int str_table_get_index(str_table_t *table, const char *str, size_t *idx)
str_bucket_t *bucket;
sqfs_u32 hash;
size_t index;
+ int err;
hash = strhash(str);
index = hash % table->num_buckets;
@@ -105,8 +102,9 @@ int str_table_get_index(str_table_t *table, const char *str, size_t *idx)
bucket = bucket->next;
}
- if (strings_grow(table))
- return -1;
+ err = strings_grow(table);
+ if (err)
+ return err;
bucket = calloc(1, sizeof(*bucket));
if (bucket == NULL)
@@ -125,8 +123,7 @@ int str_table_get_index(str_table_t *table, const char *str, size_t *idx)
return 0;
fail_oom:
free(bucket);
- perror("allocating hash table bucket");
- return -1;
+ return SQFS_ERROR_ALLOC;
}
const char *str_table_get_string(str_table_t *table, size_t index)