From a0e32cbf74e977cdb02defc91081f19b7746c392 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 20 Nov 2013 14:58:22 +0100 Subject: fix handling of | in s/// commands of built-in sed Change-Id: I139d007d68fb0aed4d9fbe57a14d1ede81ba40d8 Reviewed-by: Joerg Bornemann --- qmake/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'qmake/main.cpp') diff --git a/qmake/main.cpp b/qmake/main.cpp index b1929e0d21..340567a27d 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -106,7 +106,7 @@ static int doSed(int argc, char **argv) } } if (phase == 1 - && (c == QLatin1Char('+') || c == QLatin1Char('?') + && (c == QLatin1Char('+') || c == QLatin1Char('?') || c == QLatin1Char('|') || c == QLatin1Char('{') || c == QLatin1Char('}') || c == QLatin1Char('(') || c == QLatin1Char(')'))) { // translate sed rx to QRegExp -- cgit v1.2.3 From 3d89b10db979cb501c21bfb2052210dbbb127dbb Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 20 Nov 2013 15:50:43 +0100 Subject: fix handling of \\ in replacement string in s/// cmd of built-in sed QString::replace() has no way of escaping capture group references, so simply disarm double backslashes. of course this is broken, but we'd need to reimplement it from scratch to fix it properly. "corner case" ... Change-Id: I357fbfd22c9c4a68809e5af6efad1de3a95706b5 Reviewed-by: Joerg Bornemann --- qmake/main.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'qmake/main.cpp') diff --git a/qmake/main.cpp b/qmake/main.cpp index 340567a27d..79e3739f56 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -133,6 +133,7 @@ static int doSed(int argc, char **argv) SedSubst subst; subst.from = QRegExp(phases.at(0)); subst.to = phases.at(1); + subst.to.replace("\\\\", "\\"); // QString::replace(rx, sub) groks \1, but not \\. substs << subst; } } else if (argv[i][0] == '-' && argv[i][1] != 0) { -- cgit v1.2.3