fix argument quoting on windows
quotes prefixed with multiple backslashes would not be escaped correctly. Change-Id: I56ec72e31bb4ed2b9119ec1996448f803f89ce35 Reviewed-on: http://codereview.qt.nokia.com/962 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
This commit is contained in:
parent
a77ce3301c
commit
b929ce465f
@ -46,6 +46,7 @@
|
||||
#include <qdatetime.h>
|
||||
#include <qdir.h>
|
||||
#include <qfileinfo.h>
|
||||
#include <qregexp.h>
|
||||
#include <qtimer.h>
|
||||
#include <qthread.h>
|
||||
#include <qmutex.h>
|
||||
@ -256,10 +257,8 @@ static QString qt_create_commandline(const QString &program, const QStringList &
|
||||
|
||||
for (int i=0; i<arguments.size(); ++i) {
|
||||
QString tmp = arguments.at(i);
|
||||
// in the case of \" already being in the string the \ must also be escaped
|
||||
tmp.replace( QLatin1String("\\\""), QLatin1String("\\\\\"") );
|
||||
// escape a single " because the arguments will be parsed
|
||||
tmp.replace( QLatin1Char('\"'), QLatin1String("\\\"") );
|
||||
// Quotes are escaped and their preceding backslashes are doubled.
|
||||
tmp.replace(QRegExp(QLatin1String("(\\\\*)\"")), QLatin1String("\\1\\1\\\""));
|
||||
if (tmp.isEmpty() || tmp.contains(QLatin1Char(' ')) || tmp.contains(QLatin1Char('\t'))) {
|
||||
// The argument must not end with a \ since this would be interpreted
|
||||
// as escaping the quote -- rather put the \ behind the quote: e.g.
|
||||
|
Loading…
Reference in New Issue
Block a user