Fix removing entries during tab complete
Since tabNext starts on match->next, if match gets removed, it should be set to match->prev so that tabNext will start in the same spot.master
parent
07c750d25c
commit
6323ca0209
4
tab.c
4
tab.c
|
@ -81,7 +81,7 @@ void tabRemove(struct Tag tag, const char *word) {
|
||||||
if (tag.id != TAG_ALL.id && entry->tag != tag.id) continue;
|
if (tag.id != TAG_ALL.id && entry->tag != tag.id) continue;
|
||||||
if (strcmp(entry->word, word)) continue;
|
if (strcmp(entry->word, word)) continue;
|
||||||
unlink(entry);
|
unlink(entry);
|
||||||
if (match == entry) match = entry->next;
|
if (match == entry) match = entry->prev;
|
||||||
free(entry->word);
|
free(entry->word);
|
||||||
free(entry);
|
free(entry);
|
||||||
return;
|
return;
|
||||||
|
@ -92,7 +92,7 @@ void tabClear(struct Tag tag) {
|
||||||
for (struct Entry *entry = head; entry; entry = entry->next) {
|
for (struct Entry *entry = head; entry; entry = entry->next) {
|
||||||
if (entry->tag != tag.id) continue;
|
if (entry->tag != tag.id) continue;
|
||||||
unlink(entry);
|
unlink(entry);
|
||||||
if (match == entry) match = entry->next;
|
if (match == entry) match = entry->prev;
|
||||||
free(entry->word);
|
free(entry->word);
|
||||||
free(entry);
|
free(entry);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue