You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Данная фунция возвращает новый список, который состоит из одинаковых элементов, потому что она извлекает из сортированного списка некоторый элемент, равный искомому, и идет по списку до тех пор, пока элемент равен искомому:
if (strncmp(list->data[id].string, string, strlen(string)) !=0)
returnNULL;
struct_list_char*list_alike=list_char_init();
for (inti=id; i<list->data_count; i++)
{
if (strncmp(list->data[i].string, string, strlen(string)) !=0)
break;
add_last(list_alike, list->data[i].string);
}
returnlist_alike;
}
Однако, первый элемент может быть из любого элемента подмассива одинаковых элементов, это не обязательно самый первый элемент равный искомому, из сортированного списка:
Единственное место использования этой функции -- в этом месте, где, похоже, значение имеет лишь количество элементов. Но из-за указанной особенности алгоритма, вероятно, это не то количество, которое нужно -- оно может быть меньше, чем нужно:
log_message (DEBUG, _("Next autocompletion word '%s' from text '%s' (layout %d), rotate autocompletation..."), list_alike->data[p->last_pattern_id].string, word, get_curr_keyboard_group());
Не заметил сначала -- list_char_alike возвращает не список одинаковых элементов, а список всех элементов из _list_char, которые начинаются с искомого слова. Что тем не менее не отменяет того, что при наличии в списке дубликатов (а они там возможны, т.к. они не удаляются) не все дубликаты будут обрабатываться. Возможно, проблема как раз в том, что в списке могут быть дубликаты
Данная фунция возвращает новый список, который состоит из одинаковых элементов, потому что она извлекает из сортированного списка некоторый элемент, равный искомому, и идет по списку до тех пор, пока элемент равен искомому:
xneur-devel/xneur/lib/misc/list_char.c
Lines 224 to 245 in 362019a
Однако, первый элемент может быть из любого элемента подмассива одинаковых элементов, это не обязательно самый первый элемент равный искомому, из сортированного списка:
xneur-devel/xneur/lib/misc/list_char.c
Lines 54 to 78 in 362019a
Единственное место использования этой функции -- в этом месте, где, похоже, значение имеет лишь количество элементов. Но из-за указанной особенности алгоритма, вероятно, это не то количество, которое нужно -- оно может быть меньше, чем нужно:
xneur-devel/xneur/lib/main/program.c
Lines 2199 to 2253 in 362019a
Из кода неочевидно, зачем вообще подсчитывать количество слов, на первый взгляд это мало на что влияет. Данное место нуждается в пристальном внимании
The text was updated successfully, but these errors were encountered: