Don't use the QRegExp methods that modify the object [Designer]
authorThiago Macieira <thiago.macieira@intel.com>
Mon, 23 Apr 2012 15:46:55 +0000 (17:46 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 24 Apr 2012 07:35:22 +0000 (09:35 +0200)
QRegExp matching methods modify the object, which we don't want to. In
particular, when we receive a QRegExp from the user or we store in a
context that might require thread-safety, make sure we make a copy
before using it.

QRegularExpression has no such shortcoming.

Task-number: QTBUG-25064
Change-Id: I58984ddce6a44cca7fe5a7b36e4595bad791d976
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
src/designer/src/components/formeditor/formwindowsettings.cpp
src/designer/src/components/formeditor/layout_propertysheet.cpp
src/designer/src/components/widgetbox/widgetboxcategorylistview.cpp
src/designer/src/components/widgetbox/widgetboxtreewidget.cpp
src/designer/src/lib/shared/formlayoutmenu.cpp
src/designer/src/lib/shared/qdesigner_widgetbox.cpp
src/designer/src/lib/shared/signalslotdialog.cpp
src/designer/src/lib/shared/textpropertyeditor.cpp

index 2b546be..371315e 100644 (file)
@@ -226,7 +226,7 @@ FormWindowData FormWindowSettings::data() const
     if (!hints.isEmpty()) {
         rc.includeHints = hints.split(QString(QLatin1Char('\n')));
         // Purge out any lines consisting of blanks only
-        const QRegExp blankLine = QRegExp(QStringLiteral("^\\s*$"));
+        QRegExp blankLine = QRegExp(QStringLiteral("^\\s*$"));
         Q_ASSERT(blankLine.isValid());
         for (QStringList::iterator it = rc.includeHints.begin(); it != rc.includeHints.end(); )
             if (blankLine.exactMatch(*it)) {
index 08048d1..2b79043 100644 (file)
@@ -107,7 +107,7 @@ namespace {
 static bool isIntegerList(const QString &s)
 {
     // Check for empty string or comma-separated list of integers
-    static const QRegExp re(QStringLiteral("[0-9]+(,[0-9]+)+"));
+    static QRegExp re(QStringLiteral("[0-9]+(,[0-9]+)+"));
     Q_ASSERT(re.isValid());
     return s.isEmpty() || re.exactMatch(s);
 }
index f32e797..14eb167 100644 (file)
@@ -364,7 +364,7 @@ QWidget *WidgetBoxCategoryEntryDelegate::createEditor(QWidget *parent,
 {
     QWidget *result = QItemDelegate::createEditor(parent, option, index);
     if (QLineEdit *line_edit = qobject_cast<QLineEdit*>(result)) {
-        const QRegExp re = QRegExp(QStringLiteral("[_a-zA-Z][_a-zA-Z0-9]*"));
+        QRegExp re = QRegExp(QStringLiteral("[_a-zA-Z][_a-zA-Z0-9]*"));
         Q_ASSERT(re.isValid());
         line_edit->setValidator(new QRegExpValidator(re, line_edit));
     }
index d302a39..a489d3a 100644 (file)
@@ -971,7 +971,7 @@ void WidgetBoxTreeWidget::dropWidgets(const QList<QDesignerDnDItemInterface*> &i
 void WidgetBoxTreeWidget::filter(const QString &f)
 {
     const bool empty = f.isEmpty();
-    const QRegExp re = empty ? QRegExp() : QRegExp(f, Qt::CaseInsensitive, QRegExp::FixedString);
+    QRegExp re = empty ? QRegExp() : QRegExp(f, Qt::CaseInsensitive, QRegExp::FixedString);
     const int numTopLevels = topLevelItemCount();
     bool changed = false;
     for (int i = 0; i < numTopLevels; i++) {
index 713e930..fd7aa27 100644 (file)
@@ -130,7 +130,7 @@ private:
     void updateOkButton();
 
     // Check for buddy marker in string
-    const QRegExp m_buddyMarkerRegexp;
+    QRegExp m_buddyMarkerRegexp;
 
     Ui::FormLayoutRowDialog m_ui;
     bool m_labelNameEdited;
index 0b868f4..31a49f5 100644 (file)
@@ -170,7 +170,7 @@ bool QDesignerWidgetBox::findWidget(const QDesignerWidgetBoxInterface *wbox,
     QString pattern = QStringLiteral("^<widget\\s+class\\s*=\\s*\"");
     pattern += className;
     pattern += QStringLiteral("\".*$");
-    const QRegExp regexp(pattern);
+    QRegExp regexp(pattern);
     Q_ASSERT(regexp.isValid());
     const int catCount = wbox->categoryCount();
     for (int c = 0; c < catCount; c++) {
index d261a24..73c409f 100644 (file)
@@ -138,8 +138,8 @@ namespace {
         virtual void setModelData (QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
 
     private:
-        const QRegExp m_signatureRegexp;
-        const QRegExp m_methodNameRegexp;
+        QRegExp m_signatureRegexp;
+        QRegExp m_methodNameRegexp;
     };
 
     SignatureDelegate::SignatureDelegate(QObject * parent) :
@@ -166,8 +166,10 @@ namespace {
         Q_ASSERT(le);
         // Did the user just type a name? .. Add parentheses
         QString signature = le->text();
-        if (!m_signatureRegexp.exactMatch(signature )) {
-            if (m_methodNameRegexp.exactMatch(signature )) {
+        QRegExp signatureRegexp = m_signatureRegexp;
+        QRegExp methodNameRegexp = m_methodNameRegexp;
+        if (!signatureRegexp.exactMatch(signature )) {
+            if (methodNameRegexp.exactMatch(signature )) {
                 signature += QStringLiteral("()");
                 le->setText(signature);
             } else {
index 3471abc..da97a8a 100644 (file)
@@ -168,7 +168,7 @@ namespace {
     QUrl UrlValidator::guessUrlFromString(const QString &string) const
     {
         const QString urlStr = string.trimmed();
-        const QRegExp qualifiedUrl(QStringLiteral("^[a-zA-Z]+\\:.*"));
+        QRegExp qualifiedUrl(QStringLiteral("^[a-zA-Z]+\\:.*"));
 
         // Check if it looks like a qualified URL. Try parsing it and see.
         const bool hasSchema = qualifiedUrl.exactMatch(urlStr);
@@ -299,7 +299,7 @@ namespace qdesigner_internal {
 
     void TextPropertyEditor::setRegExpValidator(const QString &pattern)
     {
-        const QRegExp regExp(pattern);
+        QRegExp regExp(pattern);
         Q_ASSERT(regExp.isValid());
         m_lineEdit->setValidator(new QRegExpValidator(regExp,m_lineEdit));
     }