[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)