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