]> git.saurik.com Git - wxWidgets.git/commitdiff
[ 1587248 ] Segfault w/o Session Manager (e.g. KDE/GNOME ...)
authorRobert Roebling <robert@roebling.de>
Mon, 30 Oct 2006 14:46:17 +0000 (14:46 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 30 Oct 2006 14:46:17 +0000 (14:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/utilsgtk.cpp

index ed16a667e05a5a39051ff00c95785c42720b43eb..287cb599485f5b610a3b82257cb6a1b9aab0be72 100644 (file)
@@ -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