… | |
… | |
4 | |
4 | |
5 | dynbuf::dynbuf (int initial, int extend) |
5 | dynbuf::dynbuf (int initial, int extend) |
6 | { |
6 | { |
7 | _size = 0; |
7 | _size = 0; |
8 | ext = extend; |
8 | ext = extend; |
|
|
9 | |
9 | first = last = (chunk *) new char[sizeof (chunk) + initial]; |
10 | first = last = (chunk *)salloc<char> (sizeof (chunk) + initial); |
10 | |
11 | first->alloc = sizeof (chunk) + initial; |
11 | first->next = 0; |
12 | first->next = 0; |
|
|
13 | |
12 | room = initial; |
14 | room = initial; |
13 | ptr = first->data; |
15 | ptr = first->data; |
14 | } |
16 | } |
15 | |
17 | |
16 | dynbuf::~dynbuf () |
18 | dynbuf::~dynbuf () |
… | |
… | |
23 | { |
25 | { |
24 | while (first) |
26 | while (first) |
25 | { |
27 | { |
26 | chunk *next = first->next; |
28 | chunk *next = first->next; |
27 | |
29 | |
28 | delete[](char *) first; |
30 | sfree<char> ((char *)first, first->alloc); |
29 | first = next; |
31 | first = next; |
30 | } |
32 | } |
31 | } |
33 | } |
32 | |
34 | |
33 | void |
35 | void |
… | |
… | |
47 | ext += ext >> 1; |
49 | ext += ext >> 1; |
48 | ext = (ext + 15) & ~15; |
50 | ext = (ext + 15) & ~15; |
49 | } |
51 | } |
50 | while (ext < size); |
52 | while (ext < size); |
51 | |
53 | |
52 | chunk *add = (chunk *) new char[sizeof (chunk) + ext]; |
54 | chunk *add = (chunk *) salloc<char> (sizeof (chunk) + ext); |
53 | |
55 | add->alloc = sizeof (chunk) + ext; |
54 | add->next = 0; |
56 | add->next = 0; |
55 | |
57 | |
56 | last->next = add; |
58 | last->next = add; |
57 | last = add; |
59 | last = add; |
58 | |
60 | |
… | |
… | |
79 | { |
81 | { |
80 | if (first->next) |
82 | if (first->next) |
81 | { |
83 | { |
82 | finish (); |
84 | finish (); |
83 | |
85 | |
84 | chunk *add = (chunk *) new char[sizeof (chunk) + _size]; |
86 | chunk *add = (chunk *) salloc<char> (sizeof (chunk) + _size); |
85 | |
87 | add->alloc = sizeof (chunk) + _size; |
86 | add->next = 0; |
88 | add->next = 0; |
|
|
89 | |
87 | linearise ((void *) add->data); |
90 | linearise ((void *)add->data); |
88 | clear (); |
91 | clear (); |
89 | |
92 | |
90 | first = last = add; |
93 | first = last = add; |
91 | ptr = last->data + _size; |
94 | ptr = last->data + _size; |
92 | _size = 0; |
95 | _size = 0; |