null+****@clear*****
null+****@clear*****
2010年 12月 21日 (火) 16:58:52 JST
Daijiro MORI 2010-12-21 07:58:52 +0000 (Tue, 21 Dec 2010)
New Revision: 82c681f45f4fa409e25059495cbeb5b8593265d5
Log:
Fixed a bug in grn_array_delete_by_id() thanks to Masahiro Tomita!
Modified files:
lib/hash.c
Modified: lib/hash.c (+4 -2)
===================================================================
--- lib/hash.c 2010-12-15 11:02:04 +0000 (7884df1)
+++ lib/hash.c 2010-12-21 07:58:52 +0000 (2f130ea)
@@ -400,6 +400,8 @@ grn_array_delete_by_id(grn_ctx *ctx, grn_array *array, grn_id id,
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 {
@@ -409,11 +411,11 @@ grn_array_delete_by_id(grn_ctx *ctx, grn_array *array, grn_id id,
if (!ee) { rc = GRN_INVALID_ARGUMENT; goto exit; }
*((grn_id *)ee) = array->garbages;
array->garbages = id;
+ (*array->n_entries)--;
+ (*array->n_garbages)++;
}
GRN_TINY_ARRAY_BIT_OFF(&array->bitmap, id);
}
- (*array->n_entries)--;
- (*array->n_garbages)++;
exit :
/* unlock */
return rc;