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-04 12:25:55 +0300
committerCampbell Barton <campbell@blender.org>2022-05-04 12:28:11 +0300
commit79e94caa6bf9fac819f7ba1c225adaf7bb67ec87 (patch)
treeaf31e4336954a68498c083976d83b583b0afb722 /source/blender/editors/space_text/text_ops.c
parent0375720e28892f2a6a34b849940b41ed2b407faa (diff)
Fix error pasting text containing tabs
Regression in [0] which missed updating the string length when converting tabs to spaces - the pasted string would be shorter. [0]: e2f4c4db8d6cbe4694c24d599e16ee3889871bdd
Diffstat (limited to 'source/blender/editors/space_text/text_ops.c')
-rw-r--r--source/blender/editors/space_text/text_ops.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
index 753f82e483e..05d51cf6362 100644
--- a/source/blender/editors/space_text/text_ops.c
+++ b/source/blender/editors/space_text/text_ops.c
@@ -97,8 +97,9 @@ static char text_closing_character_pair_get(const char character)
* This function converts the indentation tabs from a buffer to spaces.
* \param in_buf: A pointer to a cstring.
* \param tab_size: The size, in spaces, of the tab character.
+ * \param r_out_buf_len: The #strlen of the returned buffer.
*/
-static char *buf_tabs_to_spaces(const char *in_buf, const int tab_size)
+static char *buf_tabs_to_spaces(const char *in_buf, const int tab_size, int *r_out_buf_len)
{
/* Get the number of tab characters in buffer. */
bool line_start = true;
@@ -148,6 +149,7 @@ static char *buf_tabs_to_spaces(const char *in_buf, const int tab_size)
}
out_buf[out_offset] = '\0';
+ *r_out_buf_len = out_offset;
return out_buf;
}
@@ -916,7 +918,7 @@ static int text_paste_exec(bContext *C, wmOperator *op)
/* Convert clipboard content indentation to spaces if specified */
if (text->flags & TXT_TABSTOSPACES) {
- char *new_buf = buf_tabs_to_spaces(buf, TXT_TABSIZE);
+ char *new_buf = buf_tabs_to_spaces(buf, TXT_TABSIZE, &buf_len);
MEM_freeN(buf);
buf = new_buf;
}