summaryrefslogtreecommitdiff
path: root/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'buffer.c')
-rw-r--r--buffer.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/buffer.c b/buffer.c
index 983f6bc2f..a80880bb9 100644
--- a/buffer.c
+++ b/buffer.c
@@ -12,7 +12,7 @@
12 */ 12 */
13 13
14#include "includes.h" 14#include "includes.h"
15RCSID("$OpenBSD: buffer.c,v 1.16 2002/06/26 08:54:18 markus Exp $"); 15RCSID("$OpenBSD: buffer.c,v 1.19 2003/09/18 07:54:48 markus Exp $");
16 16
17#include "xmalloc.h" 17#include "xmalloc.h"
18#include "buffer.h" 18#include "buffer.h"
@@ -23,8 +23,11 @@ RCSID("$OpenBSD: buffer.c,v 1.16 2002/06/26 08:54:18 markus Exp $");
23void 23void
24buffer_init(Buffer *buffer) 24buffer_init(Buffer *buffer)
25{ 25{
26 buffer->alloc = 4096; 26 const u_int len = 4096;
27 buffer->buf = xmalloc(buffer->alloc); 27
28 buffer->alloc = 0;
29 buffer->buf = xmalloc(len);
30 buffer->alloc = len;
28 buffer->offset = 0; 31 buffer->offset = 0;
29 buffer->end = 0; 32 buffer->end = 0;
30} 33}
@@ -34,8 +37,11 @@ buffer_init(Buffer *buffer)
34void 37void
35buffer_free(Buffer *buffer) 38buffer_free(Buffer *buffer)
36{ 39{
37 memset(buffer->buf, 0, buffer->alloc); 40 if (buffer->alloc > 0) {
38 xfree(buffer->buf); 41 memset(buffer->buf, 0, buffer->alloc);
42 buffer->alloc = 0;
43 xfree(buffer->buf);
44 }
39} 45}
40 46
41/* 47/*
@@ -99,6 +105,7 @@ restart:
99 goto restart; 105 goto restart;
100 } 106 }
101 /* Increase the size of the buffer and retry. */ 107 /* Increase the size of the buffer and retry. */
108
102 newlen = buffer->alloc + len + 32768; 109 newlen = buffer->alloc + len + 32768;
103 if (newlen > 0xa00000) 110 if (newlen > 0xa00000)
104 fatal("buffer_append_space: alloc %u not supported", 111 fatal("buffer_append_space: alloc %u not supported",