ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/shstr.C
(Generate patch)

Comparing deliantra/server/common/shstr.C (file contents):
Revision 1.9 by root, Mon Sep 4 17:16:19 2006 UTC vs.
Revision 1.12 by root, Thu Sep 7 07:52:58 2006 UTC

2 * shstr.C 2 * shstr.C
3 */ 3 */
4 4
5#include <cstring> 5#include <cstring>
6#include <cstdlib> 6#include <cstdlib>
7
8#include <glib.h>
7 9
8#include <tr1/unordered_set> 10#include <tr1/unordered_set>
9 11
10#include "shstr.h" 12#include "shstr.h"
11#include "util.h" 13#include "util.h"
16 18
17static const char *makevec (const char *s) 19static const char *makevec (const char *s)
18{ 20{
19 int len = strlen (s); 21 int len = strlen (s);
20 22
21 const char *v = (const char *)(2 + (int *)malloc (sizeof (int) * 2 + len + 1)); 23 const char *v = (const char *)(2 + (int *)g_slice_alloc (sizeof (int) * 2 + len + 1));
22 24
23 shstr::length (v) = len; 25 shstr::length (v) = len;
24 shstr::refcnt (v) = 1; 26 shstr::refcnt (v) = 1;
25 27
26 memcpy ((char *)v, s, len + 1); 28 memcpy ((char *)v, s, len + 1);
92 HT::iterator o = i++; 94 HT::iterator o = i++;
93 const char *s = *o; 95 const char *s = *o;
94 ht.erase (o); 96 ht.erase (o);
95 97
96 //printf ("GC %4d %3d %d >%s<%d\n", (int)ht.size (), n, shstr::refcnt (s), s, shstr::length (s)); 98 //printf ("GC %4d %3d %d >%s<%d\n", (int)ht.size (), n, shstr::refcnt (s), s, shstr::length (s));
97 free (-2 + (int *)s); 99 g_slice_free1 (sizeof (int) * 2 + length (s) + 1, -2 + (int *)s);
98 } 100 }
99 else 101 else
100 ++i; 102 ++i;
101 } 103 }
102 104

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines