summaryrefslogtreecommitdiffabout
path: root/src/txtacc.c
Side-by-side diff
Diffstat (limited to 'src/txtacc.c') (more/less context) (show whitespace changes)
-rw-r--r--src/txtacc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/txtacc.c b/src/txtacc.c
index c094c22..91659f6 100644
--- a/src/txtacc.c
+++ b/src/txtacc.c
@@ -121,11 +121,12 @@ txtacc_grow (struct txtacc *acc, const char *buf, size_t size)
}
char *
-txtacc_finish (struct txtacc *acc)
+txtacc_finish (struct txtacc *acc, int steal)
{
struct grecs_list_entry *ep;
struct txtacc_entry *txtent;
size_t size;
+ char *p;
switch (grecs_list_size (acc->cur))
{
@@ -135,7 +136,6 @@ txtacc_finish (struct txtacc *acc)
case 1:
txtent = acc->cur->head->data;
acc->cur->head->data = NULL;
- grecs_list_append (acc->mem, txtent);
txtacc_entry_tailor (txtent);
break;
@@ -156,7 +156,12 @@ txtacc_finish (struct txtacc *acc)
}
grecs_list_clear (acc->cur);
- return txtent->buf;
+ p = txtent->buf;
+ if (steal)
+ free (txtent);
+ else
+ grecs_list_append (acc->mem, txtent);
+ return p;
}
void

Return to:

Send suggestions and report system problems to the System administrator.