[Groonga-commit] groonga/grnxx [master] Fix bugs in grnxx::alpha::map::Array.

Back to archive index

susumu.yata null+****@clear*****
Thu Apr 4 21:44:07 JST 2013


susumu.yata	2013-04-04 21:44:07 +0900 (Thu, 04 Apr 2013)

  New Revision: 2ed3beed67586bbb4b49a37e16d8e52776f5feaa
  https://github.com/groonga/grnxx/commit/2ed3beed67586bbb4b49a37e16d8e52776f5feaa

  Message:
    Fix bugs in grnxx::alpha::map::Array.

  Modified files:
    lib/grnxx/alpha/map/array.cpp

  Modified: lib/grnxx/alpha/map/array.cpp (+4 -3)
===================================================================
--- lib/grnxx/alpha/map/array.cpp    2013-04-04 18:38:46 +0900 (92c5782)
+++ lib/grnxx/alpha/map/array.cpp    2013-04-04 21:44:07 +0900 (f6b37fd)
@@ -119,7 +119,7 @@ bool Array<T>::reset(int64_t key_id, T dest_key) {
 
 template <typename T>
 bool Array<T>::search(T key, int64_t *key_id) {
-  for (int64_t i = 0; i < header_->max_key_id; ++i) {
+  for (int64_t i = 0; i <= header_->max_key_id; ++i) {
     if (get_bit(i)) {
       if (key == keys_[i]) {
         if (key_id) {
@@ -135,7 +135,7 @@ bool Array<T>::search(T key, int64_t *key_id) {
 template <typename T>
 bool Array<T>::insert(T key, int64_t *key_id) {
   int64_t key_id_candidate = -1;
-  for (int64_t i = 0; i < header_->max_key_id; ++i) {
+  for (int64_t i = 0; i <= header_->max_key_id; ++i) {
     if (get_bit(i)) {
       if (key == keys_[i]) {
         if (key_id) {
@@ -143,7 +143,7 @@ bool Array<T>::insert(T key, int64_t *key_id) {
         }
         return false;
       }
-    } else if (key_id_candidate != -1) {
+    } else if (key_id_candidate == -1) {
       // Use the youngest ID if there exist IDs associated with removed keys.
       key_id_candidate = i;
     }
@@ -152,6 +152,7 @@ bool Array<T>::insert(T key, int64_t *key_id) {
     key_id_candidate = ++header_->max_key_id;
   }
   keys_[key_id_candidate] = key;
+  set_bit(key_id_candidate, true);
   if (key_id) {
     *key_id = key_id_candidate;
   }
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index