Index: kdelibs-4.3.2/kinit/kinit.cpp =================================================================== --- kdelibs-4.3.2.orig/kinit/kinit.cpp 2009-10-15 13:54:48.000000000 +0200 +++ kdelibs-4.3.2/kinit/kinit.cpp 2009-10-15 13:55:36.000000000 +0200 @@ -489,6 +489,13 @@ init_startup_info( startup_id, name, envc, envs ); #endif + // Don't run this inside the child process, it crashes on OS X + const QByteArray docPath = QFile::encodeName(KGlobalSettings::documentPath()); +#ifdef Q_WS_MAC + const QString bundlepath = s_instance->dirs()->findExe(QFile::decodeName(execpath)); + const QString argvexe = s_instance->dirs()->findExe(QString::fromLatin1(_name)); +#endif + d.errorMsg = 0; d.fork = fork(); switch(d.fork) { @@ -513,7 +520,6 @@ if (cwd && *cwd) { (void)chdir(cwd); } else { - const QByteArray docPath = QFile::encodeName(KGlobalSettings::documentPath()); (void)chdir(docPath.constData()); } @@ -552,7 +558,6 @@ d.argv = (char **) malloc(sizeof(char *) * (argc+1)); d.argv[0] = (char *) _name; #ifdef Q_WS_MAC - QString argvexe = s_instance->dirs()->findExe(QString::fromLatin1(d.argv[0])); if (!argvexe.isEmpty()) { QByteArray cstr = argvexe.toLocal8Bit(); kDebug(7016) << "kdeinit4: launch() setting argv: " << cstr.data(); @@ -590,9 +595,12 @@ exitWithErrorMsg(errorMsg); } - +#ifdef Q_WS_MAC + libpath.truncate(0); +#else if ( !qgetenv("KDE_IS_PRELINKED").isEmpty() && !execpath.isEmpty()) libpath.truncate(0); +#endif QLibrary l(libpath); @@ -628,7 +636,6 @@ QByteArray executable = execpath; #ifdef Q_WS_MAC - QString bundlepath = s_instance->dirs()->findExe(QFile::decodeName(executable)); if (!bundlepath.isEmpty()) executable = QFile::encodeName(bundlepath); #endif Index: kdelibs-4.3.2/kinit/klauncher.cpp =================================================================== --- kdelibs-4.3.2.orig/kinit/klauncher.cpp 2009-10-15 13:54:48.000000000 +0200 +++ kdelibs-4.3.2/kinit/klauncher.cpp 2009-10-15 14:01:39.000000000 +0200 @@ -1144,6 +1144,12 @@ kDebug(7016) << "KLauncher: launching new slave " << name << " with protocol=" << protocol << " args=" << arg_list << endl; +#ifdef Q_WS_MAC + arg_list.prepend(KLibLoader::findLibrary(name)); + name = KStandardDirs::findExe(QString::fromLatin1("kioslave")); + arg_list.prepend(name); +#endif + #ifdef Q_OS_UNIX if (mSlaveDebug == arg1) { @@ -1154,8 +1160,10 @@ } if (mSlaveValgrind == arg1) { +#ifndef Q_WS_MAC arg_list.prepend(KLibLoader::findLibrary(name)); arg_list.prepend(KStandardDirs::locate("exe", QString::fromLatin1("kioslave"))); +#endif name = QString::fromLatin1("valgrind"); if (!mSlaveValgrindSkin.isEmpty()) { arg_list.prepend(QLatin1String("--tool=") + mSlaveValgrindSkin);