Fix text.as_string() adding a trailing new-line
Moving Text.as_string() from Python to C [0] added an extra new-line
causing a round-trip from_string/to_string to add a new-line,
this also broke the undo test `test_undo.text_editor_simple` in
`../lib/tests/ui_simulate/run.py`.
[0]: 231eac160e
This commit is contained in:
parent
210d0f1b80
commit
f4ff36431c
Notes:
blender-bot
2023-02-14 04:24:05 +01:00
Referenced by commit bdb5a50682
, Update tests to account for Text.as_string not adding a trailing newline
|
@ -1425,11 +1425,15 @@ void txt_from_buf_for_undo(Text *text, const char *buf, size_t buf_len)
|
|||
|
||||
char *txt_to_buf(Text *text, size_t *r_buf_strlen)
|
||||
{
|
||||
const bool has_data = !BLI_listbase_is_empty(&text->lines);
|
||||
/* Identical to #txt_to_buf_for_undo except that the string is nil terminated. */
|
||||
size_t buf_len = 0;
|
||||
LISTBASE_FOREACH (const TextLine *, l, &text->lines) {
|
||||
buf_len += l->len + 1;
|
||||
}
|
||||
if (has_data) {
|
||||
buf_len -= 1;
|
||||
}
|
||||
char *buf = MEM_mallocN(buf_len + 1, __func__);
|
||||
char *buf_step = buf;
|
||||
LISTBASE_FOREACH (const TextLine *, l, &text->lines) {
|
||||
|
@ -1437,6 +1441,11 @@ char *txt_to_buf(Text *text, size_t *r_buf_strlen)
|
|||
buf_step += l->len;
|
||||
*buf_step++ = '\n';
|
||||
}
|
||||
/* Remove the trailing new-line so a round-trip doesn't add a newline:
|
||||
* Python for e.g. `text.from_string(text.as_string())`. */
|
||||
if (has_data) {
|
||||
buf_step--;
|
||||
}
|
||||
*buf_step = '\0';
|
||||
*r_buf_strlen = buf_len;
|
||||
return buf;
|
||||
|
|
Loading…
Reference in New Issue