35 uint32_t *original_offsets = list->
offsets;
39 if (list->
offsets == NULL)
return false;
41 memcpy(list->
offsets, original_offsets, list->
size *
sizeof(uint32_t));
42 xfree_sized(original_offsets, list->
size *
sizeof(uint32_t));
58 size_t right = list->
size - 1;
60 while (left <= right) {
61 size_t mid = left + (right - left) / 2;
63 if (list->
offsets[mid] == cursor) {
64 return ((int32_t) mid) + start_line;
67 if (list->
offsets[mid] < cursor) {
74 return ((int32_t) left) + start_line - 1;
85 size_t right = list->
size - 1;
87 while (left <= right) {
88 size_t mid = left + (right - left) / 2;
90 if (list->
offsets[mid] == cursor) {
94 if (list->
offsets[mid] < cursor) {
102 .line = ((int32_t) left) + start_line - 1,
103 .column = cursor - list->
offsets[left - 1]