shada: When storing numeric marks reset the numbers

Attempt to fix observed crash. Crash currently not reproduced.
This commit is contained in:
ZyX 2018-04-01 20:05:19 +03:00
parent 1ac1f520f0
commit 200898546e

View File

@ -2431,14 +2431,14 @@ static inline void replace_numbered_mark(WriteMergerState *const wms,
}
for (size_t i = idx; i < ARRAY_SIZE(wms->numbered_marks) - 1; i++) {
if (wms->numbered_marks[i].data.type == kSDItemGlobalMark) {
wms->numbered_marks[i].data.data.filemark.name++;
assert(ascii_isdigit(wms->numbered_marks[i].data.data.filemark.name));
wms->numbered_marks[i].data.data.filemark.name = '0' + (char)i;
}
}
memmove(wms->numbered_marks + idx + 1, wms->numbered_marks + idx,
sizeof(wms->numbered_marks[0])
* (ARRAY_SIZE(wms->numbered_marks) - 1 - idx));
wms->numbered_marks[idx] = entry;
wms->numbered_marks[idx].data.data.filemark.name = '0' + (char)idx;
}
/// Write ShaDa file