[Bf-blender-cvs] [7c78bce] master: Fix for crash un-indenting in the text editor

Campbell Barton noreply at git.blender.org
Mon Apr 14 05:40:23 CEST 2014


Commit: 7c78bcef6cb9c7cde928ed8062a12ab6ba88d2cb
Author: Campbell Barton
Date:   Mon Apr 14 13:26:12 2014 +1000
https://developer.blender.org/rB7c78bcef6cb9c7cde928ed8062a12ab6ba88d2cb

Fix for crash un-indenting in the text editor

===================================================================

M	source/blender/blenkernel/intern/text.c

===================================================================

diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index f426634..c34fe32 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -2775,23 +2775,21 @@ void txt_unindent(Text *text)
 	}
 
 	while (true) {
-		int i = 0;
-		
-		if (BLI_strncasecmp(text->curl->line, remove, indentlen) == 0) {
+		bool changed = false;
+		if (strncmp(text->curl->line, remove, indentlen) == 0) {
 			if (num == 0)
 				unindented_first = true;
-			while (i < text->curl->len) {
-				text->curl->line[i] = text->curl->line[i + indentlen];
-				i++;
-			}
 			text->curl->len -= indentlen;
+			memmove(text->curl->line, text->curl->line + indentlen, text->curl->len + 1);
+			changed = true;
 		}
 	
 		txt_make_dirty(text);
 		txt_clean_text(text);
 		
 		if (text->curl == text->sell) {
-			if (i > 0) text->selc = MAX2(text->selc - indentlen, 0);
+			if (changed)
+				text->selc = MAX2(text->selc - indentlen, 0);
 			break;
 		}
 		else {
@@ -2801,7 +2799,8 @@ void txt_unindent(Text *text)
 		
 	}
 
-	if (unindented_first) text->curc = MAX2(text->curc - indentlen, 0);
+	if (unindented_first)
+		text->curc = MAX2(text->curc - indentlen, 0);
 
 	while (num > 0) {
 		text->curl = text->curl->prev;




More information about the Bf-blender-cvs mailing list