-rw-r--r-- | core/tools/quicklauncher/main.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/core/tools/quicklauncher/main.cpp b/core/tools/quicklauncher/main.cpp index b1befce..fb2ca44 100644 --- a/core/tools/quicklauncher/main.cpp +++ b/core/tools/quicklauncher/main.cpp @@ -79,6 +79,7 @@ void setproctitle (const char *fmt,...) { i = argv_lth - 2; buf[i] = '\0'; } + memset(argv0[0], '\0', argv_lth); /* clear the memory area */ (void) strcpy (argv0[0], buf); @@ -111,6 +112,7 @@ public: if ( loader->queryInterface(appName, IID_QtopiaApplication, (QUnknownInterface**)&appIface) == QS_OK ) { mainWindow = appIface->createMainWindow( appName ); } + if ( mainWindow ) { if ( mainWindow->metaObject()->slotNames().contains("setDocument(const QString&)") ) { app->showMainDocumentWidget( mainWindow ); @@ -154,10 +156,12 @@ private: { static int myargc = argList.count(); static char **myargv = new char *[myargc + 1]; + for ( int j = 0; j < myargc; j++ ) { myargv[j] = new char [strlen(argList.at(j))+1]; strcpy( myargv[j], argList.at(j) ); } + myargv[myargc] = NULL; #ifdef _OS_LINUX_ // Change name of process @@ -184,8 +188,10 @@ int main( int argc, char** argv ) QCString arg0 = argv[0]; int sep = arg0.findRev( '/' ); + if ( sep > 0 ) arg0 = arg0.mid( sep+1 ); + if ( arg0 != "quicklauncher" ) { odebug << "QuickLauncher invoked as: " << arg0.data() << oendl; QuickLauncher::exec( argc, argv ); @@ -225,11 +231,6 @@ int main( int argc, char** argv ) // Each of the following force internal structures/internal // initialization to be performed. This may mean allocating // memory that is not needed by all applications. -#if 0 - TimeZone::current().isValid(); // popuplate timezone cache - TimeString::currentDateFormat(); // create internal structures - TimeString::currentAMPM(); -#endif Resource::loadIconSet("new"); // do internal init /* make sure libopie gets lined in */ @@ -251,11 +252,13 @@ int main( int argc, char** argv ) if ( mainWindow ) delete (QWidget*)mainWindow; - delete app; + if ( appIface ) loader->releaseInterface( appIface ); delete loader; + + // Neither QLibrary nor my Dropin is a QObject and they don't depend // on a qApp so we destroy QWidget::destroyMapper() without // crashing the app |