--- deliantra/server/common/utils.C 2006/09/11 01:16:20 1.10 +++ deliantra/server/common/utils.C 2006/09/12 20:55:40 1.12 @@ -1,7 +1,7 @@ /* * static char *rcsid_utils_c = - * "$Id: utils.C,v 1.10 2006/09/11 01:16:20 root Exp $"; + * "$Id: utils.C,v 1.12 2006/09/12 20:55:40 root Exp $"; */ /* @@ -533,6 +533,7 @@ /*trim all trailing commas, spaces etc. */ for (i = strlen (tmp); !isalnum (tmp[i]) && i >= 0; i--) tmp[i] = '\0'; + strcat (tmp, "."); p = strrchr (tmp, ','); @@ -546,40 +547,45 @@ } else strcpy (input, tmp); + return; } -void * -zero_initialised::operator new (size_t s, void *p) +void *alloc (int s) throw (std::bad_alloc) { - memset (p, 0, s); - return p; + if (s) + return g_slice_alloc (s); + else + return 0; } -void * -zero_initialised::operator new (size_t s) +void dealloc (void *p, int s) throw () { - //return calloc (1, s); - return g_slice_alloc0 (s); + if (s) + g_slice_free1 (s, p); } -void * - zero_initialised::operator new[] (size_t s) +void assign (char *dst, const char *src, int maxlen) { - //return calloc (1, s); - return g_slice_alloc0 (s); -} + if (!src) + src = ""; -void -zero_initialised::operator delete (void *p, size_t s) -{ - //free (p); return; - g_slice_free1 (s, p); -} + int len = strlen (src); -void -zero_initialised::operator delete[] (void *p, size_t s) -{ - //free (p); return; - g_slice_free1 (s, p); + if (len >= maxlen - 1) + { + if (maxlen <= 4) + { + memset (dst, '.', maxlen - 1); + dst [maxlen - 1] = 0; + } + else + { + memcpy (dst, src, maxlen - 4); + memcpy (dst + maxlen - 4, "...", 4); + } + } + else + memcpy (dst, src, len + 1); } +