[Box Backup-commit] COMMIT r1243 - box/chris/merge/lib/common
boxbackup-dev@fluffy.co.uk
boxbackup-dev@fluffy.co.uk
Sun, 14 Jan 2007 14:59:27 +0000
Author: chris
Date: 2007-01-14 14:59:27 +0000 (Sun, 14 Jan 2007)
New Revision: 1243
Modified:
box/chris/merge/lib/common/Timer.cpp
Log:
- Make sure timer is stopped before removing signal handler, otherwise
SIGALRM will kill us.
Modified: box/chris/merge/lib/common/Timer.cpp
===================================================================
--- box/chris/merge/lib/common/Timer.cpp 2007-01-13 15:43:18 UTC (rev 1242)
+++ box/chris/merge/lib/common/Timer.cpp 2007-01-14 14:59:27 UTC (rev 1243)
@@ -56,9 +56,12 @@
#if defined WIN32 && ! defined PLATFORM_CYGWIN
// no support for signals at all
- SetTimerHandler(NULL);
FiniTimer();
+ SetTimerHandler(NULL);
#else
+ struct itimerval timeout;
+ memset(&timeout, 0, sizeof(timeout));
+ ASSERT(::setitimer(ITIMER_REAL, &timeout, NULL) == 0);
ASSERT(::signal(SIGALRM, NULL) == Timers::SignalHandler);
#endif // WIN32 && !PLATFORM_CYGWIN
@@ -203,11 +206,7 @@
timeout.it_value.tv_usec = (int)
(BoxTimeToMicroSeconds(timeToNextEvent) % MICRO_SEC_IN_SEC);
-#ifdef PLATFORM_CYGWIN
if(::setitimer(ITIMER_REAL, &timeout, NULL) != 0)
-#else
- if(::setitimer(ITIMER_REAL, &timeout, NULL) != 0)
-#endif // PLATFORM_CYGWIN
{
TRACE0("WARNING: couldn't initialise timer\n");
THROW_EXCEPTION(CommonException, Internal)