Fix assert in UI string trimming code when we have 'protected' right part.

This commit is contained in:
Bastien Montagne 2018-08-02 16:38:39 +02:00
parent 777e1b9654
commit 771973869d
1 changed files with 3 additions and 2 deletions

View File

@ -1494,7 +1494,7 @@ float UI_text_clip_middle_ex(
rpart = rpart_buf;
}
l_end = BLF_width_to_strlen(fstyle->uifont_id, str, max_len, parts_strwidth, &rpart_width);
l_end = BLF_width_to_strlen(fstyle->uifont_id, str, max_len, parts_strwidth, NULL);
if (l_end < 10 || min_ff(parts_strwidth, strwidth - okwidth) < minwidth) {
/* If we really have no place, or we would clip a very small piece of string in the middle,
* only show start of string.
@ -1504,7 +1504,7 @@ float UI_text_clip_middle_ex(
else {
size_t r_offset, r_len;
r_offset = BLF_width_to_rstrlen(fstyle->uifont_id, str, max_len, parts_strwidth, &rpart_width);
r_offset = BLF_width_to_rstrlen(fstyle->uifont_id, str, max_len, parts_strwidth, NULL);
r_len = strlen(str + r_offset) + 1; /* +1 for the trailing '\0'. */
if (l_end + sep_len + r_len + rpart_len > max_len) {
@ -1525,6 +1525,7 @@ float UI_text_clip_middle_ex(
if (rpart) {
/* Add back preserved right part to our shorten str. */
memcpy(str + final_lpart_len, rpart, rpart_len + 1); /* +1 for trailing '\0'. */
okwidth += rpart_width;
}
strwidth = BLF_width(fstyle->uifont_id, str, max_len);