C: AVL trees: fixed a bug where storing the difference between 2 crc64

values in an int64 would mess trees up resulting in failed data
dereplication
This commit is contained in:
Celine Mercier
2020-07-07 16:47:00 +02:00
parent 9100e14899
commit a3ebe5f118
2 changed files with 16 additions and 4 deletions

View File

@ -2259,7 +2259,13 @@ index_t obi_avl_add(OBIDMS_avl_p avl, Obi_blob_p value)
parent = next;
// Compare the crc of the value with the crc of the current node
comp = (current_node->crc64) - crc;
//comp = (current_node->crc64) - crc;
if ((current_node->crc64) == crc)
comp = 0;
else if ((current_node->crc64) > crc)
comp = 1;
else
comp = -1;
if (comp == 0)
{ // check if really same value
@ -2354,7 +2360,13 @@ index_t obi_avl_find(OBIDMS_avl_p avl, Obi_blob_p value)
current_node = (avl->tree)+next;
// Compare the crc of the value with the crc of the current node
comp = (current_node->crc64) - crc;
//comp = (current_node->crc64) - crc;
if ((current_node->crc64) == crc)
comp = 0;
else if ((current_node->crc64) > crc)
comp = 1;
else
comp = -1;
if (comp == 0)
{ // Check if really same value