From 4d3b1841ceab56c30b4d9d700382066eecdf093f Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 13 May 2013 09:58:59 +0200 Subject: [PATCH] [Fix #7798] (I)LIKE operator escapes regexp characters before computing regexp --- src/core/qgsexpression.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/qgsexpression.cpp b/src/core/qgsexpression.cpp index 56856cacb74b..f4a6e5e096b6 100644 --- a/src/core/qgsexpression.cpp +++ b/src/core/qgsexpression.cpp @@ -1936,10 +1936,11 @@ QVariant QgsExpression::NodeBinaryOperator::eval( QgsExpression* parent, QgsFeat bool matches; if ( mOp == boLike || mOp == boILike || mOp == boNotLike || mOp == boNotILike ) // change from LIKE syntax to regexp { + QString esc_regexp = QRegExp::escape( regexp ); // XXX escape % and _ ??? - regexp.replace( "%", ".*" ); - regexp.replace( "_", "." ); - matches = QRegExp( regexp, mOp == boLike || mOp == boNotLike ? Qt::CaseSensitive : Qt::CaseInsensitive ).exactMatch( str ); + esc_regexp.replace( "%", ".*" ); + esc_regexp.replace( "_", "." ); + matches = QRegExp( esc_regexp, mOp == boLike || mOp == boNotLike ? Qt::CaseSensitive : Qt::CaseInsensitive ).exactMatch( str ); } else {