瀏覽代碼

Merge pull request #33046 from zatherz/master

Don't terminate search if begin_key doesn't fit (Fixes #33034)
Rémi Verschelde 5 年之前
父節點
當前提交
2869c13ba2
共有 1 個文件被更改,包括 34 次插入33 次删除
  1. 34 33
      scene/gui/text_edit.cpp

+ 34 - 33
scene/gui/text_edit.cpp

@@ -161,57 +161,58 @@ void TextEdit::Text::_update_line_cache(int p_line) const {
 			/* BEGIN */
 
 			int lr = cr.begin_key.length();
-			if (lr == 0 || lr > left)
-				continue;
+			const CharType *kc;
+			bool match;
 
-			const CharType *kc = cr.begin_key.c_str();
+			if (lr != 0 && lr <= left) {
+				kc = cr.begin_key.c_str();
 
-			bool match = true;
+				match = true;
 
-			for (int k = 0; k < lr; k++) {
-				if (kc[k] != str[i + k]) {
-					match = false;
-					break;
+				for (int k = 0; k < lr; k++) {
+					if (kc[k] != str[i + k]) {
+						match = false;
+						break;
+					}
 				}
-			}
 
-			if (match) {
+				if (match) {
 
-				ColorRegionInfo cri;
-				cri.end = false;
-				cri.region = j;
-				text.write[p_line].region_info[i] = cri;
-				i += lr - 1;
+					ColorRegionInfo cri;
+					cri.end = false;
+					cri.region = j;
+					text.write[p_line].region_info[i] = cri;
+					i += lr - 1;
 
-				break;
+					break;
+				}
 			}
 
 			/* END */
 
 			lr = cr.end_key.length();
-			if (lr == 0 || lr > left)
-				continue;
+			if (lr != 0 && lr <= left) {
+				kc = cr.end_key.c_str();
 
-			kc = cr.end_key.c_str();
+				match = true;
 
-			match = true;
-
-			for (int k = 0; k < lr; k++) {
-				if (kc[k] != str[i + k]) {
-					match = false;
-					break;
+				for (int k = 0; k < lr; k++) {
+					if (kc[k] != str[i + k]) {
+						match = false;
+						break;
+					}
 				}
-			}
 
-			if (match) {
+				if (match) {
 
-				ColorRegionInfo cri;
-				cri.end = true;
-				cri.region = j;
-				text.write[p_line].region_info[i] = cri;
-				i += lr - 1;
+					ColorRegionInfo cri;
+					cri.end = true;
+					cri.region = j;
+					text.write[p_line].region_info[i] = cri;
+					i += lr - 1;
 
-				break;
+					break;
+				}
 			}
 		}
 	}