diff options
author | Tor Andersson <tor@ghostscript.com> | 2004-11-11 07:15:07 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2004-11-11 07:15:07 +0100 |
commit | 58de1fff510078e3d2d8cfce033c87299adf78f0 (patch) | |
tree | 80635049b0d1ccc8840717982afe983ea18c0b37 /filter/pipeline.c | |
parent | 2ec725624d637789845478a90f799e9eeb54f9ee (diff) | |
download | mupdf-58de1fff510078e3d2d8cfce033c87299adf78f0.tar.xz |
filter reference counting
Diffstat (limited to 'filter/pipeline.c')
-rw-r--r-- | filter/pipeline.c | 25 |
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; } |