> Fair enough.
>
> Other opinions around? Olivier has already said he's for reverting to
> the old
> 4.7 behaviour.
>
The documentation note about the dangers of constructing QUrl from QString was 
already there in 4.6 (at the bottom of the page)
However, QT_NO_URL_CAST_FROM_STRING is not defined by default, so there are no 
compiler errors or warnings when using unsafe construction.

So I'm ambivalent when it comes to C++ applications.

What has convinced me is the Qt Creator HTML5 app wizard generates this kind of 
unsafe code.
I would assume that many users of this app wizard are web developers with 
limited c++ skills, and in any case would expect the boilerplate generated by 
the SDK to be good.

So I am in favour of keeping the 4.7 behaviour in 4.x releases.
I'd also be in favour of making QT_NO_URL_CAST_FROM_STRING turned on by default 
in 5.x (i.e. you need to define QT_ALLOW_URL_CAST_FROM_STRING to allow those 
assignments)

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Html5ApplicationViewer viewer;
    viewer.setOrientation(Html5ApplicationViewer::ScreenOrientationAuto);
    viewer.showExpanded();
    viewer.loadFile(QLatin1String("html/index.html")); // <-- relative path

    return app.exec();
}

QString Html5ApplicationViewerPrivate::adjustPath(const QString &path)
{
#ifdef Q_OS_UNIX
#ifdef Q_OS_MAC
    if (!QDir::isAbsolutePath(path))
        return QCoreApplication::applicationDirPath()
                + QLatin1String("/../Resources/") + path;
#else
    const QString pathInInstallDir = QCoreApplication::applicationDirPath()
        + QLatin1String("/../") + path;
    if (pathInInstallDir.contains(QLatin1String("opt"))
            && pathInInstallDir.contains(QLatin1String("bin"))
            && QFileInfo(pathInInstallDir).exists()) { // <-- condition is 
false on symbian
        return pathInInstallDir;
    }
#endif
#endif
    return path; // <-- path is unmodified
}

void Html5ApplicationViewer::loadFile(const QString &fileName)
{
    
m_d->m_webView->setUrl(QUrl(Html5ApplicationViewerPrivate::adjustPath(fileName)));
 // <-- QT_NO_URL_CAST_FROM_STRING wouldn't have helped, but it should still be 
using QUrl::fromLocalFile
}

________________________________
Subject to local law, communications with Accenture and its affiliates 
including telephone calls and emails (including content), may be monitored by 
our systems for the purposes of security and the assessment of internal 
compliance with Accenture policy.
______________________________________________________________________________________

www.accenture.com

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to