--- deliantra/server/common/utils.C 2006/12/11 21:32:16 1.20 +++ deliantra/server/common/utils.C 2006/12/16 21:40:26 1.24 @@ -29,6 +29,8 @@ #include #include +#include +#include #include /* @@ -256,10 +258,7 @@ } /* adjust overall chance below */ if (destroy && rndm (0, 1)) - { - remove_ob (op); - free_object (op); - } + op->destroy (); } } @@ -560,14 +559,26 @@ } #endif -void *alloc (int s) throw (std::bad_alloc) +void *salloc (int size) throw (std::bad_alloc) { - void *p = g_slice_alloc (s); + void *ptr = g_slice_alloc (size); - if (!p) + if (!ptr) throw std::bad_alloc (); - return p; + return ptr; +} + +void *salloc (int size, void *src) throw (std::bad_alloc) +{ + void *ptr = salloc (size); + + if (src) + memcpy (ptr, src, size); + else + memset (ptr, 0, size); + + return ptr; } void assign (char *dst, const char *src, int maxlen) @@ -594,4 +605,11 @@ memcpy (dst, src, len + 1); } +tstamp now () +{ + struct timeval tv; + + gettimeofday (&tv, 0); + return tstamp (tv.tv_sec) + tstamp (tv.tv_usec) * tstamp (1e-6); +}