From: Jean-Marc Lasgouttes Date: Tue, 17 Nov 2009 17:04:47 +0000 (+0000) Subject: revert previous fix for Snow Leopard crashes and apply new one X-Git-Tag: 2.0.0~5109 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=3f22ae8f1dffd930dddf23b447ca5d315d47058d;p=features.git revert previous fix for Snow Leopard crashes and apply new one git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32067 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/Buffer.cpp b/src/Buffer.cpp index cf43bcaf30..55090abc47 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -2964,6 +2964,15 @@ private: int AutoSaveBuffer::generateChild() { +#if defined(__APPLE__) + /* FIXME fork() is not usable for autosave on Mac OS X 10.6 (snow leopard) + * We should use something else like threads. + * + * Since I do not know how to determine at run time what is the OS X + * version, I just disable forking altogether for now (JMarc) + */ + pid_t const pid = -1; +#else // tmp_ret will be located (usually) in /tmp // will that be a problem? // Note that this calls ForkedCalls::fork(), so it's @@ -2973,6 +2982,7 @@ int AutoSaveBuffer::generateChild() // you should set pid to -1, and comment out the fork. if (pid != 0 && pid != -1) return pid; +#endif // pid = -1 signifies that lyx was unable // to fork. But we will do the save diff --git a/src/support/ForkedCalls.cpp b/src/support/ForkedCalls.cpp index 592053b6cf..e5e2aa8c2b 100644 --- a/src/support/ForkedCalls.cpp +++ b/src/support/ForkedCalls.cpp @@ -150,7 +150,7 @@ int ForkedProcess::run(Starttype type) bool ForkedProcess::running() const { - if (!pid()) + if (pid() <= 0) return false; #if !defined (_WIN32) @@ -170,7 +170,7 @@ bool ForkedProcess::running() const void ForkedProcess::kill(int tol) { lyxerr << "ForkedProcess::kill(" << tol << ')' << endl; - if (pid() == 0) { + if (pid() <= 0) { lyxerr << "Can't kill non-existent process!" << endl; return; } @@ -192,13 +192,7 @@ void ForkedProcess::kill(int tol) pid_t ForkedProcess::fork() { -/* FIXME fork() is not usable on Mac OS X 10.6 (snow leopard) - * Use something else like threads. - * - * Since I do not know how to determine at run time what is the OS X - * version, I just disable forking altogether for now (JMarc) - */ -#if !defined (HAVE_FORK) || defined(__APPLE__) +#if !defined (HAVE_FORK) return -1; #else pid_t pid = ::fork();