--- deliantra/server/common/utils.C 2008/01/25 18:09:23 1.70 +++ deliantra/server/common/utils.C 2008/04/02 11:13:53 1.73 @@ -471,7 +471,7 @@ void *salloc_ (int n) throw (std::bad_alloc) { -#ifdef PREFER_MALLOC +#if PREFER_MALLOC void *ptr = malloc (n); #else slice_alloc += n; @@ -498,7 +498,7 @@ /******************************************************************************/ -#ifdef DEBUG_SALLOC +#if DEBUG_SALLOC #define MAGIC 0xa1b2c35543deadLL @@ -523,7 +523,7 @@ unsigned long *p = (unsigned long *)ptr; unsigned long s = *--p ^ MAGIC; - if ((*p ^ MAGIC) != size) + if (size != (unsigned long)(*p ^ MAGIC)) LOG (logBacktrace | llevError, "slice free size (%lx) doesn't match alloc size (%lx)\n", size, s); *p = MAGIC; @@ -650,3 +650,15 @@ 0x2d02ef8dL }; +void thread::start (void *(*start_routine)(void *), void *arg) +{ + sigset_t fullsigset, oldsigset; + sigfillset (&fullsigset); + + pthread_sigmask (SIG_SETMASK, &fullsigset, &oldsigset); + + if (pthread_create (&id, 0, start_routine, arg)) + cleanup ("unable to create a new thread"); + + pthread_sigmask (SIG_SETMASK, &oldsigset, 0); +}