From 58de1fff510078e3d2d8cfce033c87299adf78f0 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Thu, 11 Nov 2004 07:15:07 +0100 Subject: filter reference counting --- filter/pipeline.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'filter/pipeline.c') 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; } -- cgit v1.2.3