From cb1bf052602934757ddf5ecdd42abbce1e61f2f2 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Mon, 30 Oct 2006 14:46:17 +0000 Subject: [PATCH] [ 1587248 ] Segfault w/o Session Manager (e.g. KDE/GNOME ...) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/utilsgtk.cpp | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index ed16a667e0..287cb59948 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -293,27 +293,32 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const #if wxUSE_DETECT_SM static wxString GetSM() { - Display *dpy; - SmcConn smc_conn; - char *vendor; - char *client_id_ret; - dpy = XOpenDisplay(NULL); + Display *dpy; + SmcConn smc_conn; + char *vendor; + char *client_id_ret; + dpy = XOpenDisplay(NULL); - smc_conn = SmcOpenConnection(NULL, NULL, + smc_conn = SmcOpenConnection(NULL, NULL, 999, 999, 0 /* mask */, NULL /* callbacks */, NULL, &client_id_ret, 0, NULL); - vendor = SmcVendor(smc_conn); - wxString ret = wxString::FromAscii( vendor ); - free(vendor); + if (smc_conn) + { + vendor = SmcVendor(smc_conn); + wxString ret = wxString::FromAscii( vendor ); + free(vendor); - SmcCloseConnection(smc_conn, 0, NULL); - free(client_id_ret); + SmcCloseConnection(smc_conn, 0, NULL); + free(client_id_ret); - XCloseDisplay(dpy); + XCloseDisplay(dpy); + + return ret; + } - return ret; + return wxEmptyString; } #endif -- 2.45.2