aboutsummaryrefslogtreecommitdiff
path: root/register.c
diff options
context:
space:
mode:
Diffstat (limited to 'register.c')
-rw-r--r--register.c30
1 files changed, 5 insertions, 25 deletions
diff --git a/register.c b/register.c
index db43d71..cc25414 100644
--- a/register.c
+++ b/register.c
@@ -2,37 +2,17 @@
#include <string.h>
#include "register.h"
+#include "buffer.h"
+#include "text.h"
#include "util.h"
-#define REG_SIZE 1024
-
-static bool register_alloc(Register *reg, size_t size) {
- if (size < REG_SIZE)
- size = REG_SIZE;
- if (reg->size < size) {
- reg->data = realloc(reg->data, size);
- if (!reg->data) {
- reg->size = 0;
- reg->len = 0;
- return false;
- }
- reg->size = size;
- }
- return true;
-}
-
void register_free(Register *reg) {
- if (!reg)
- return;
- free(reg->data);
- reg->data = NULL;
- reg->len = 0;
- reg->size = 0;
+ buffer_free((Buffer*)reg);
}
bool register_put(Register *reg, Text *txt, Filerange *range) {
size_t len = range->end - range->start;
- if (!register_alloc(reg, len))
+ if (!buffer_alloc((Buffer*)reg, len))
return false;
reg->len = text_bytes_get(txt, range->start, len, reg->data);
return true;
@@ -41,7 +21,7 @@ bool register_put(Register *reg, Text *txt, Filerange *range) {
bool register_append(Register *reg, Text *txt, Filerange *range) {
size_t rem = reg->size - reg->len;
size_t len = range->end - range->start;
- if (len > rem && !register_alloc(reg, reg->size + len - rem))
+ if (len > rem && !buffer_alloc((Buffer*)reg, reg->size + len - rem))
return false;
reg->len += text_bytes_get(txt, range->start, len, reg->data + reg->len);
return true;