null+****@clear*****
null+****@clear*****
2012年 3月 29日 (木) 13:25:28 JST
Susumu Yata 2012-03-29 13:25:28 +0900 (Thu, 29 Mar 2012) New Revision: 4c9e2c9aac402946d690e572c5ce0f1066fd827a Log: Update grn_array_delete_by_id(). Rename ee to entry, hh to header. Remove goto. Modified files: lib/hash.c Modified: lib/hash.c (+43 -28) =================================================================== --- lib/hash.c 2012-03-29 13:16:05 +0900 (d3b44f0) +++ lib/hash.c 2012-03-29 13:25:28 +0900 (4ef2fb5) @@ -514,36 +514,51 @@ grn_rc grn_array_delete_by_id(grn_ctx *ctx, grn_array *array, grn_id id, grn_table_delete_optarg *optarg) { - grn_rc rc = GRN_SUCCESS; - if (!ctx || !array) { return GRN_INVALID_ARGUMENT; } - if (!grn_array_bitmap_at(ctx, array, id)) { rc = GRN_INVALID_ARGUMENT; goto exit; } - /* lock */ - if (IO_ARRAYP(array)) { - if (array->value_size >= sizeof(grn_id)) { - void *ee; - struct grn_array_header *hh = array->header; - ee = grn_array_io_entry_at(ctx, array, id, 0); - if (!ee) { rc = GRN_INVALID_ARGUMENT; goto exit; } - *((grn_id *)ee) = hh->garbages; - hh->garbages = id; - } - (*array->n_entries)--; - (*array->n_garbages)++; - GRN_IO_ARRAY_BIT_OFF(array->io, array_seg_bitmap, id); - } else { - if (array->value_size >= sizeof(grn_id)) { - void *ee = grn_tiny_array_at_inline(&array->a, id); - if (!ee) { rc = GRN_INVALID_ARGUMENT; goto exit; } - *((grn_id *)ee) = array->garbages; - array->garbages = id; + if (!ctx || !array) { + return GRN_INVALID_ARGUMENT; + } + if (!grn_array_bitmap_at(ctx, array, id)) { + return GRN_INVALID_ARGUMENT; + } + + { + grn_rc rc = GRN_SUCCESS; + /* lock */ + if (IO_ARRAYP(array)) { + if (array->value_size >= sizeof(grn_id)) { + struct grn_array_header * const header = array->header; + void * const entry = grn_array_io_entry_at(ctx, array, id, 0); + if (!entry) { + rc = GRN_INVALID_ARGUMENT; + } else { + *((grn_id *)entry) = header->garbages; + header->garbages = id; + } + } + if (!rc) { + (*array->n_entries)--; + (*array->n_garbages)++; + GRN_IO_ARRAY_BIT_OFF(array->io, array_seg_bitmap, id); + } + } else { + if (array->value_size >= sizeof(grn_id)) { + void * const entry = grn_tiny_array_at_inline(&array->a, id); + if (!entry) { + rc = GRN_INVALID_ARGUMENT; + } else { + *((grn_id *)entry) = array->garbages; + array->garbages = id; + } + } + if (!rc) { + (*array->n_entries)--; + (*array->n_garbages)++; + grn_tiny_array_bit_off(&array->bitmap, id); + } } - (*array->n_entries)--; - (*array->n_garbages)++; - grn_tiny_array_bit_off(&array->bitmap, id); + /* unlock */ + return rc; } -exit : - /* unlock */ - return rc; } grn_id