mirror of https://gitee.com/bigwinds/arangodb
Debugging output.
This commit is contained in:
parent
4f0453e6f9
commit
5fb98df16e
|
@ -445,6 +445,26 @@ void* TRI_LookupByElementMultiPointer (TRI_multi_pointer_t* array,
|
||||||
/// @brief removes an element from the array
|
/// @brief removes an element from the array
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static bool CHECK (TRI_multi_pointer_t* array) {
|
||||||
|
uint64_t i,ii,j;
|
||||||
|
|
||||||
|
for (i = 0;i < array->_nrAlloc;i++) {
|
||||||
|
if (array->_table[i].ptr != NULL &&
|
||||||
|
array->_table[i].prev == TRI_MULTI_POINTER_INVALID_INDEX) {
|
||||||
|
ii = i;
|
||||||
|
j = array->_table[ii].next;
|
||||||
|
while (j != TRI_MULTI_POINTER_INVALID_INDEX) {
|
||||||
|
if (array->_table[j].prev != i) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
ii = j;
|
||||||
|
j = array->_table[ii].next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void* TRI_RemoveElementMultiPointer (TRI_multi_pointer_t* array, void const* element) {
|
void* TRI_RemoveElementMultiPointer (TRI_multi_pointer_t* array, void const* element) {
|
||||||
uint64_t i, j;
|
uint64_t i, j;
|
||||||
void* old;
|
void* old;
|
||||||
|
@ -454,6 +474,9 @@ void* TRI_RemoveElementMultiPointer (TRI_multi_pointer_t* array, void const* ele
|
||||||
array->_nrRems++;
|
array->_nrRems++;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 1\n");
|
||||||
|
}
|
||||||
i = LookupByElement(array, element);
|
i = LookupByElement(array, element);
|
||||||
if (array->_table[i].ptr == NULL) {
|
if (array->_table[i].ptr == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -467,14 +490,25 @@ void* TRI_RemoveElementMultiPointer (TRI_multi_pointer_t* array, void const* ele
|
||||||
// The only one in its linked list, simply remove it and heal
|
// The only one in its linked list, simply remove it and heal
|
||||||
// the hole:
|
// the hole:
|
||||||
InvalidateEntry(array, i);
|
InvalidateEntry(array, i);
|
||||||
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 2\n");
|
||||||
|
}
|
||||||
HealHole(array, i);
|
HealHole(array, i);
|
||||||
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 3\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// There is at least one successor in position j.
|
// There is at least one successor in position j.
|
||||||
array->_table[j].prev = TRI_MULTI_POINTER_INVALID_INDEX;
|
array->_table[j].prev = TRI_MULTI_POINTER_INVALID_INDEX;
|
||||||
MoveEntry(array, j, i);
|
MoveEntry(array, j, i);
|
||||||
InvalidateEntry(array, j);
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 4\n");
|
||||||
|
}
|
||||||
HealHole(array, j);
|
HealHole(array, j);
|
||||||
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 5\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -487,7 +521,13 @@ void* TRI_RemoveElementMultiPointer (TRI_multi_pointer_t* array, void const* ele
|
||||||
array->_table[j].prev = array->_table[i].prev;
|
array->_table[j].prev = array->_table[i].prev;
|
||||||
}
|
}
|
||||||
InvalidateEntry(array, i);
|
InvalidateEntry(array, i);
|
||||||
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 6\n");
|
||||||
|
}
|
||||||
HealHole(array, i);
|
HealHole(array, i);
|
||||||
|
if (CHECK(array)) {
|
||||||
|
printf("Alarm 7\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
array->_nrUsed--;
|
array->_nrUsed--;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue