Fix kdm crash on remote->local login switch

Detach from tsak process as early as possible


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1254061 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 13 years ago
parent da658e7205
commit e02b614061

@ -185,13 +185,22 @@ kg_main( const char *argv0 )
KApplication::disableAutoDcopRegistration(); KApplication::disableAutoDcopRegistration();
KCrash::setSafer( true ); KCrash::setSafer( true );
trinity_desktop_lock_use_sak = _useSAK;
KProcess *tsak = 0; KProcess *tsak = 0;
KProcess *proc = 0;
KProcess *comp = 0;
KProcess *kwin = 0;
trinity_desktop_lock_use_sak = _useSAK;
if (trinity_desktop_lock_use_sak) { if (trinity_desktop_lock_use_sak) {
tsak = new KProcess; tsak = new KProcess;
*tsak << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "tsak"; *tsak << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "tsak";
tsak->start(); tsak->start();
} }
if (tsak) {
tsak->closeStdin();
tsak->detach();
delete tsak;
}
#ifdef HAVE_XCOMPOSITE #ifdef HAVE_XCOMPOSITE
// Begin ARGB initialization // Begin ARGB initialization
@ -279,9 +288,6 @@ kg_main( const char *argv0 )
setup_modifiers( dpy, _numLockStatus ); setup_modifiers( dpy, _numLockStatus );
SecureDisplay( dpy ); SecureDisplay( dpy );
KProcess *proc = 0;
KProcess *comp = 0;
KProcess *kwin = 0;
if (!_grabServer) { if (!_grabServer) {
if (_useBackground) { if (_useBackground) {
proc = new KProcess; proc = new KProcess;
@ -334,7 +340,7 @@ kg_main( const char *argv0 )
KProcess *proc2 = 0; KProcess *proc2 = 0;
app->setOverrideCursor( Qt::WaitCursor ); app->setOverrideCursor( Qt::WaitCursor );
FDialog *dialog; FDialog *dialog = NULL;
#ifdef XDMCP #ifdef XDMCP
if (cmd == G_Choose) { if (cmd == G_Choose) {
dialog = new ChooserDlg; dialog = new ChooserDlg;
@ -389,7 +395,9 @@ kg_main( const char *argv0 )
login_user = static_cast<KGreeter*>(dialog)->curUser; login_user = static_cast<KGreeter*>(dialog)->curUser;
delete dialog; if (rslt != ex_greet) {
delete dialog;
}
delete proc2; delete proc2;
#ifdef XDMCP #ifdef XDMCP
switch (rslt) { switch (rslt) {
@ -432,11 +440,6 @@ kg_main( const char *argv0 )
kwin->detach(); kwin->detach();
delete kwin; delete kwin;
} }
if (tsak) {
tsak->closeStdin();
tsak->detach();
delete tsak;
}
delete proc; delete proc;
UnsecureDisplay( dpy ); UnsecureDisplay( dpy );
restore_modifiers(); restore_modifiers();

Loading…
Cancel
Save