null+****@clear*****
null+****@clear*****
2012年 3月 30日 (金) 11:30:34 JST
Susumu Yata 2012-03-30 11:30:34 +0900 (Fri, 30 Mar 2012)
New Revision: ff28853aea74b329f32d25062396c541043eff66
Log:
Rename tiny_hash_fin() to grn_tiny_hash_fin().
Modified files:
lib/hash.c
Modified: lib/hash.c (+30 -26)
===================================================================
--- lib/hash.c 2012-03-30 11:00:31 +0900 (d693c8d)
+++ lib/hash.c 2012-03-30 11:30:34 +0900 (842e3af)
@@ -1194,8 +1194,11 @@ grn_hash_create(grn_ctx *ctx, const char *path, uint32_t key_size, uint32_t valu
uint32_t flags)
{
grn_hash *hash;
- if (key_size > GRN_HASH_MAX_KEY_SIZE) { return NULL; }
- if (!(hash = GRN_MALLOC(sizeof(grn_hash)))) {
+ if (key_size > GRN_HASH_MAX_KEY_SIZE) {
+ return NULL;
+ }
+ hash = (grn_hash *)GRN_MALLOC(sizeof(grn_hash));
+ if (!hash) {
return NULL;
}
GRN_DB_OBJ_SET_TYPE(hash, GRN_TABLE_HASH_KEY);
@@ -1244,31 +1247,32 @@ grn_hash_open(grn_ctx *ctx, const char *path)
return NULL;
}
-inline static grn_rc
-tiny_hash_fin(grn_ctx *ctx, grn_hash *hash)
-{
- if (hash->index) {
- if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) {
- uint32_t i;
- grn_id e, *sp;
- for (i = *hash->n_entries, sp = hash->index; i; sp++) {
- entry_astr *n;
- e = *sp;
- if (!e || (e == GARBAGE)) { continue; }
- n = grn_tiny_array_at_inline(&hash->a, e);
- GRN_ASSERT(n);
- i--;
- if (!n || (n->flag & HASH_IMMEDIATE)) { continue; }
- GRN_CTX_FREE(ctx, n->str);
+static grn_rc
+grn_tiny_hash_fin(grn_ctx *ctx, grn_hash *hash)
+{
+ if (!hash->index) {
+ return GRN_INVALID_ARGUMENT;
+ }
+
+ if (hash->obj.header.flags & GRN_OBJ_KEY_VAR_SIZE) {
+ uint32_t num_remaining_entries = *hash->n_entries;
+ grn_id *hash_ptr;
+ for (hash_ptr = hash->index; num_remaining_entries; hash_ptr++) {
+ const grn_id id = *hash_ptr;
+ if (id && id != GARBAGE) {
+ entry_astr * const e = grn_tiny_array_at_inline(&hash->a, id);
+ GRN_ASSERT(e);
+ num_remaining_entries--;
+ if (e && !(e->flag & HASH_IMMEDIATE)) {
+ GRN_CTX_FREE(ctx, e->str);
+ }
}
}
- grn_tiny_array_fin(&hash->a);
- grn_tiny_array_fin(&hash->bitmap);
- GRN_CTX_FREE(ctx, hash->index);
- return GRN_SUCCESS;
- } else {
- return GRN_INVALID_ARGUMENT;
}
+ grn_tiny_array_fin(&hash->a);
+ grn_tiny_array_fin(&hash->bitmap);
+ GRN_CTX_FREE(ctx, hash->index);
+ return GRN_SUCCESS;
}
grn_rc
@@ -1280,7 +1284,7 @@ grn_hash_close(grn_ctx *ctx, grn_hash *hash)
rc = grn_io_close(ctx, hash->io);
} else {
GRN_ASSERT(ctx == hash->ctx);
- rc = tiny_hash_fin(ctx, hash);
+ rc = grn_tiny_hash_fin(ctx, hash);
}
GRN_FREE(hash);
return rc;
@@ -2429,7 +2433,7 @@ grn_rhash_fin(grn_ctx *ctx, grn_hash *hash)
rc = grn_io_close(ctx, hash->io);
} else {
GRN_ASSERT(ctx == hash->ctx);
- rc = tiny_hash_fin(ctx, hash);
+ rc = grn_tiny_hash_fin(ctx, hash);
}
return rc;
}