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

Comparing deliantra/server/server/dynbuf.C (file contents):
Revision 1.8 by root, Mon Apr 23 18:21:54 2007 UTC vs.
Revision 1.9 by root, Mon Apr 30 17:39:58 2007 UTC

9 9
10 first = last = (chunk *)salloc<char> (sizeof (chunk) + initial); 10 first = last = (chunk *)salloc<char> (sizeof (chunk) + initial);
11 first->alloc = sizeof (chunk) + initial; 11 first->alloc = sizeof (chunk) + initial;
12 first->next = 0; 12 first->next = 0;
13 13
14 room = initial;
15 ptr = first->data; 14 ptr = first->data;
15 end = ptr + initial;
16} 16}
17 17
18dynbuf::~dynbuf () 18dynbuf::~dynbuf ()
19{ 19{
20 clear (); 20 clear ();
56 add->next = 0; 56 add->next = 0;
57 57
58 last->next = add; 58 last->next = add;
59 last = add; 59 last = add;
60 60
61 room = ext;
62 ptr = last->data; 61 ptr = last->data;
62 end = ptr + ext;
63} 63}
64 64
65void 65void
66dynbuf::linearise (void *data) 66dynbuf::linearise (void *data)
67{ 67{
90 linearise ((void *)add->data); 90 linearise ((void *)add->data);
91 clear (); 91 clear ();
92 92
93 first = last = add; 93 first = last = add;
94 ptr = last->data + _size; 94 ptr = last->data + _size;
95 end = ptr;
95 _size = 0; 96 _size = 0;
96 room = 0;
97 } 97 }
98 98
99 return first->data; 99 return first->data;
100} 100}
101 101
113 { 113 {
114 force (128); 114 force (128);
115 115
116 va_list ap; 116 va_list ap;
117 va_start (ap, format); 117 va_start (ap, format);
118 len = vsnprintf (ptr, room, format, ap); 118 len = vsnprintf (ptr, end - ptr, format, ap);
119 va_end (ap); 119 va_end (ap);
120 120
121 assert (len >= 0); // shield against broken vsnprintf's 121 assert (len >= 0); // shield against broken vsnprintf's
122 122
123 // was enough room available 123 // was enough room available
124 if (len < room) 124 if (ptr + len < end)
125 { 125 {
126 alloc (len); 126 alloc (len);
127 return; 127 return;
128 } 128 }
129 } 129 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines