From 05b6c466c3c80fe032eb9d35ef9c8cda92cc6c46 Mon Sep 17 00:00:00 2001 From: Nuno Sucena Almeida Date: Sun, 24 Feb 2013 18:59:26 -0500 Subject: [PATCH] Fix crash on case-preserving replace Task-number: QTCREATORBUG-8821 Change-Id: Icb843108bd48dd1266469667f318a5ef32b05e06 Reviewed-by: Orgad Shaneh Reviewed-by: David Schulz --- src/libs/utils/filesearch.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/filesearch.cpp b/src/libs/utils/filesearch.cpp index 75b4add40a8..03024c5362d 100644 --- a/src/libs/utils/filesearch.cpp +++ b/src/libs/utils/filesearch.cpp @@ -352,6 +352,9 @@ namespace Utils { namespace Internal { QString matchCaseReplacement(const QString &originalText, const QString &replaceText) { + if (originalText.isEmpty()) + return replaceText; + //Now proceed with actual case matching bool firstIsUpperCase = originalText.at(0).isUpper(); bool firstIsLowerCase = originalText.at(0).isLower(); @@ -397,12 +400,12 @@ QString Utils::matchCaseReplacement(const QString &originalText, const QString & const int originalTextLen = originalText.length(); int prefixLen = 0; - for (; prefixLen <= replaceTextLen && prefixLen <= originalTextLen; prefixLen++) + for (; prefixLen < replaceTextLen && prefixLen < originalTextLen; ++prefixLen) if (replaceText.at(prefixLen).toLower() != originalText.at(prefixLen).toLower()) break; int suffixLen = 0; - for (; suffixLen < replaceTextLen - prefixLen && suffixLen < originalTextLen - prefixLen; suffixLen++) + for (; suffixLen < replaceTextLen - prefixLen && suffixLen < originalTextLen - prefixLen; ++suffixLen) if (replaceText.at(replaceTextLen - 1 - suffixLen).toLower() != originalText.at(originalTextLen- 1 - suffixLen).toLower()) break;