This commit is contained in:
Nobuyoshi Nakada 2020-03-16 10:45:22 +09:00
Родитель ad10760b05
Коммит 0f2f07a9bb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4BC7D6DF58D8DF60
1 изменённых файлов: 28 добавлений и 28 удалений

56
st.c
Просмотреть файл

@ -1507,40 +1507,40 @@ st_general_foreach(st_table *tab, st_foreach_check_callback_func *func, st_updat
curr_entry_ptr = &entries[i]; curr_entry_ptr = &entries[i];
} }
switch (retval) { switch (retval) {
case ST_REPLACE: case ST_REPLACE:
break; break;
case ST_CONTINUE: case ST_CONTINUE:
break; break;
case ST_CHECK: case ST_CHECK:
if (check_p) if (check_p)
break; break;
case ST_STOP: case ST_STOP:
return 0; return 0;
case ST_DELETE: { case ST_DELETE: {
st_data_t key = curr_entry_ptr->key; st_data_t key = curr_entry_ptr->key;
again: again:
if (packed_p) { if (packed_p) {
bin = find_entry(tab, hash, key); bin = find_entry(tab, hash, key);
if (EXPECT(bin == REBUILT_TABLE_ENTRY_IND, 0)) if (EXPECT(bin == REBUILT_TABLE_ENTRY_IND, 0))
goto again; goto again;
if (bin == UNDEFINED_ENTRY_IND) if (bin == UNDEFINED_ENTRY_IND)
break; break;
} }
else { else {
bin_ind = find_table_bin_ind(tab, hash, key); bin_ind = find_table_bin_ind(tab, hash, key);
if (EXPECT(bin_ind == REBUILT_TABLE_BIN_IND, 0)) if (EXPECT(bin_ind == REBUILT_TABLE_BIN_IND, 0))
goto again; goto again;
if (bin_ind == UNDEFINED_BIN_IND) if (bin_ind == UNDEFINED_BIN_IND)
break; break;
bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE; bin = get_bin(tab->bins, get_size_ind(tab), bin_ind) - ENTRY_BASE;
MARK_BIN_DELETED(tab, bin_ind); MARK_BIN_DELETED(tab, bin_ind);
} }
curr_entry_ptr = &entries[bin]; curr_entry_ptr = &entries[bin];
MARK_ENTRY_DELETED(curr_entry_ptr); MARK_ENTRY_DELETED(curr_entry_ptr);
tab->num_entries--; tab->num_entries--;
update_range_for_deleted(tab, bin); update_range_for_deleted(tab, bin);
break; break;
} }
} }
} }