diff options
author | Hurewitz Kevin <kevin.hurewitz@nokia.com> | 2010-08-02 13:00:00 (GMT) |
---|---|---|
committer | Olivier Goffart <olivier.goffart@nokia.com> | 2010-08-02 13:00:49 (GMT) |
commit | 4778af08ca848c82526305c66dc23bb6b732b944 (patch) | |
tree | db31af398df7868fc5c4105807c31e7a47582b1e | |
parent | f127fadc833f7b64977877879787d96586d0a501 (diff) | |
download | Qt-4778af08ca848c82526305c66dc23bb6b732b944.zip Qt-4778af08ca848c82526305c66dc23bb6b732b944.tar.gz Qt-4778af08ca848c82526305c66dc23bb6b732b944.tar.bz2 |
QDesktopServices crashes when accessing the NULL X11 variable
It appears that QDesktopServices for X11 assumes that it will be used
with a GUI application and may access the X11 variable. The X11 variable
will be NULL if it has not been initialized by the QApplication
initialization.
Merge-request: 2442
Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com>
-rw-r--r-- | src/gui/util/qdesktopservices_x11.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gui/util/qdesktopservices_x11.cpp b/src/gui/util/qdesktopservices_x11.cpp index fe7f9a6..75e7209 100644 --- a/src/gui/util/qdesktopservices_x11.cpp +++ b/src/gui/util/qdesktopservices_x11.cpp @@ -71,10 +71,12 @@ static bool openDocument(const QUrl &url) if (launch(url, QLatin1String("xdg-open"))) return true; - if (X11->desktopEnvironment == DE_GNOME && launch(url, QLatin1String("gnome-open"))) { + // Use the X11->desktopEnvironment value if X11 is non-NULL, + // otherwise just attempt to launch command regardless of the desktop environment + if ((!X11 || (X11 && X11->desktopEnvironment == DE_GNOME)) && launch(url, QLatin1String("gnome-open"))) { return true; } else { - if (X11->desktopEnvironment == DE_KDE && launch(url, QLatin1String("kfmclient exec"))) + if ((!X11 || (X11 && X11->desktopEnvironment == DE_KDE)) && launch(url, QLatin1String("kfmclient exec"))) return true; } @@ -104,10 +106,12 @@ static bool launchWebBrowser(const QUrl &url) if (launch(url, QString::fromLocal8Bit(getenv("BROWSER")))) return true; - if (X11->desktopEnvironment == DE_GNOME && launch(url, QLatin1String("gnome-open"))) { + // Use the X11->desktopEnvironment value if X11 is non-NULL, + // otherwise just attempt to launch command regardless of the desktop environment + if ((!X11 || (X11 && X11->desktopEnvironment == DE_GNOME)) && launch(url, QLatin1String("gnome-open"))) { return true; } else { - if (X11->desktopEnvironment == DE_KDE && launch(url, QLatin1String("kfmclient openURL"))) + if ((!X11 || (X11 && X11->desktopEnvironment == DE_KDE)) && launch(url, QLatin1String("kfmclient openURL"))) return true; } |