Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <campbell@blender.org>2022-05-17 10:06:36 +0300
committerCampbell Barton <campbell@blender.org>2022-05-17 10:49:32 +0300
commitf4ff36431ccfac2f0a99fc23c18fe0d9de38b36d (patch)
tree8ccf50cdc96c7323ac9b39cf727eb911361c4f7d /source/blender/blenkernel/intern/text.c
parent210d0f1b801fb23c7edabb35b67224eab671e363 (diff)
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]: 231eac160ee394d41c84e0cc36845facb7594ba5
Diffstat (limited to 'source/blender/blenkernel/intern/text.c')
-rw-r--r--source/blender/blenkernel/intern/text.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index ec6387c9cf6..9acf387b930 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -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;