Avoid storing references to rvalue FileName strings

Following 73616849, it is dangerous to store a reference to the rvalue of
toString(), since it might become dangling.

Example:

FileName foo() { return FileName::fromString(QLatin1String("/some/file")); }

void func()
{
    const QString &fileName = foo().toString();
    // fileName is now a dangling reference
}

Change-Id: I5dfad5dc8dd568a0a3c8f9f71ad93292dc26cbbe
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2015-03-02 09:18:35 +02:00
committed by hjk
parent 44797cdb52
commit 831701bb67
3 changed files with 3 additions and 3 deletions

View File

@@ -1662,7 +1662,7 @@ bool EditorManagerPrivate::saveDocument(IDocument *document)
document->checkPermissions();
const QString &fileName = document->filePath().toString();
const QString fileName = document->filePath().toString();
if (fileName.isEmpty())
return saveDocumentAs(document);

View File

@@ -490,7 +490,7 @@ QStringList SessionManagerPrivate::dependenciesOrder() const
// copy the map to a temporary list
foreach (Project *pro, m_projects) {
const QString &proName = pro->projectFilePath().toString();
const QString proName = pro->projectFilePath().toString();
unordered << QPair<QString, QStringList>(proName, m_depMap.value(proName));
}

View File

@@ -7201,7 +7201,7 @@ void TextEditorWidget::configureGenericHighlighter()
setCodeFoldingSupported(true);
}
} else {
const QString &fileName = textDocument()->filePath().toString();
const QString fileName = textDocument()->filePath().toString();
if (TextEditorSettings::highlighterSettings().isIgnoredFilePattern(fileName))
d->m_isMissingSyntaxDefinition = false;
}