summaryrefslogtreecommitdiff
path: root/filter/pipeline.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2004-11-11 07:15:07 +0100
committerTor Andersson <tor@ghostscript.com>2004-11-11 07:15:07 +0100
commit58de1fff510078e3d2d8cfce033c87299adf78f0 (patch)
tree80635049b0d1ccc8840717982afe983ea18c0b37 /filter/pipeline.c
parent2ec725624d637789845478a90f799e9eeb54f9ee (diff)
downloadmupdf-58de1fff510078e3d2d8cfce033c87299adf78f0.tar.xz
filter reference counting
Diffstat (limited to 'filter/pipeline.c')
-rw-r--r--filter/pipeline.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/filter/pipeline.c b/filter/pipeline.c
index 4ac0da58..7b7f4252 100644
--- a/filter/pipeline.c
+++ b/filter/pipeline.c
@@ -19,10 +19,10 @@ fz_error *
fz_chainpipeline(fz_filter **fp, fz_filter *head, fz_filter *tail, fz_buffer *buf)
{
FZ_NEWFILTER(fz_pipeline, p, pipeline);
- p->head = head;
- p->tail = tail;
+ p->head = fz_keepfilter(head);
+ p->tail = fz_keepfilter(tail);
p->tailneedsin = 1;
- p->buffer = buf;
+ p->buffer = fz_keepbuffer(buf);
return nil;
}
@@ -30,24 +30,25 @@ void
fz_unchainpipeline(fz_filter *filter, fz_filter **oldfp, fz_buffer **oldbp)
{
fz_pipeline *p = (fz_pipeline*)filter;
- *oldfp = p->head;
- *oldbp = p->buffer;
- fz_dropfilter(p->tail);
- fz_free(p);
+
+ *oldfp = fz_keepfilter(p->head);
+ *oldbp = fz_keepbuffer(p->buffer);
+
+ fz_dropfilter(filter);
}
fz_error *
fz_newpipeline(fz_filter **fp, fz_filter *head, fz_filter *tail)
{
- fz_error *err;
+ fz_error *error;
FZ_NEWFILTER(fz_pipeline, p, pipeline);
- p->head = head;
- p->tail = tail;
+ p->head = fz_keepfilter(head);
+ p->tail = fz_keepfilter(tail);
p->tailneedsin = 1;
- err = fz_newbuffer(&p->buffer, FZ_BUFSIZE);
- if (err) { fz_free(p); return err; }
+ error = fz_newbuffer(&p->buffer, FZ_BUFSIZE);
+ if (error) { fz_free(p); return error; }
return nil;
}