From 79e94caa6bf9fac819f7ba1c225adaf7bb67ec87 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 4 May 2022 19:25:55 +1000 Subject: 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 --- source/blender/editors/space_text/text_ops.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/blender') 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; } -- cgit v1.2.3