summaryrefslogtreecommitdiff
path: root/filter/filec.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/filec.c
parent2ec725624d637789845478a90f799e9eeb54f9ee (diff)
downloadmupdf-58de1fff510078e3d2d8cfce033c87299adf78f0.tar.xz
filter reference counting
Diffstat (limited to 'filter/filec.c')
-rw-r--r--filter/filec.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/filter/filec.c b/filter/filec.c
index 4c132b33..5ea3c75a 100644
--- a/filter/filec.c
+++ b/filter/filec.c
@@ -67,8 +67,8 @@ fz_openfile(fz_file **filep, char *path, int mode)
cleanup:
*filep = nil;
close(fd);
- fz_free(file->out);
- fz_free(file->in);
+ fz_dropbuffer(file->out);
+ fz_dropbuffer(file->in);
fz_free(file);
return error;
}
@@ -93,7 +93,7 @@ fz_openbuffer(fz_file **filep, fz_buffer *buf, int mode)
if (mode == FZ_READ)
{
- file->out = buf;
+ file->out = fz_keepbuffer(buf);
error = fz_newbuffer(&file->in, FZ_BUFSIZE);
if (error)
goto cleanup;
@@ -104,7 +104,7 @@ fz_openbuffer(fz_file **filep, fz_buffer *buf, int mode)
error = fz_newbuffer(&file->out, FZ_BUFSIZE);
if (error)
goto cleanup;
- file->in = buf;
+ file->in = fz_keepbuffer(buf);
}
return nil;
@@ -130,19 +130,11 @@ fz_closefile(fz_file *file)
file->error = nil;
}
- if (file->fd == -1) /* open to buffer not file */
- {
- if (file->mode == FZ_READ)
- fz_dropbuffer(file->in);
- else
- fz_dropbuffer(file->out);
- }
- else
- {
- fz_dropbuffer(file->in);
- fz_dropbuffer(file->out);
+ if (file->fd != -1) /* open to real file */
close(file->fd);
- }
+
+ fz_dropbuffer(file->in);
+ fz_dropbuffer(file->out);
if (file->filter)
fz_dropfilter(file->filter);
@@ -178,7 +170,7 @@ fz_pushfilter(fz_file *file, fz_filter *filter)
file->in->eof = 0;
}
- file->filter = filter;
+ file->filter = fz_keepfilter(filter);
}
else