summaryrefslogtreecommitdiff
path: root/source/tools/murun.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2016-08-30 15:23:45 +0200
committerTor Andersson <tor.andersson@artifex.com>2016-09-01 15:39:56 +0200
commit960cd3d0ffde26f40b81256fe7b309bbaefc5410 (patch)
treed1b505e03b0388c66337ba004f99cb2fc33aa2ca /source/tools/murun.c
parentf86e9738deb6c6887fb51f2d11e8294cfc1b51cb (diff)
downloadmupdf-960cd3d0ffde26f40b81256fe7b309bbaefc5410.tar.xz
pdf: Load/open streams by indirect reference object when possible.
Diffstat (limited to 'source/tools/murun.c')
-rw-r--r--source/tools/murun.c38
1 files changed, 14 insertions, 24 deletions
diff --git a/source/tools/murun.c b/source/tools/murun.c
index 0d208cad..30e799e1 100644
--- a/source/tools/murun.c
+++ b/source/tools/murun.c
@@ -3366,15 +3366,22 @@ static void ffi_PDFObject_readStream(js_State *J)
{
fz_context *ctx = js_getcontext(J);
pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
- pdf_document *pdf;
fz_buffer *buf;
+ fz_try(ctx)
+ buf = pdf_load_stream(ctx, obj);
+ fz_catch(ctx)
+ rethrow(J);
+ ffi_pushbuffer(J, buf);
+}
- fz_try(ctx) {
- if (!pdf_is_stream(ctx, obj))
- fz_throw(ctx, FZ_ERROR_GENERIC, "not a stream");
- pdf = pdf_get_indirect_document(ctx, obj);
- buf = pdf_load_stream(ctx, pdf, pdf_to_num(ctx, obj));
- } fz_catch(ctx)
+static void ffi_PDFObject_readRawStream(js_State *J)
+{
+ fz_context *ctx = js_getcontext(J);
+ pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
+ fz_buffer *buf;
+ fz_try(ctx)
+ buf = pdf_load_raw_stream(ctx, obj);
+ fz_catch(ctx)
rethrow(J);
ffi_pushbuffer(J, buf);
}
@@ -3419,23 +3426,6 @@ static void ffi_PDFObject_writeRawStream(js_State *J)
rethrow(J);
}
-static void ffi_PDFObject_readRawStream(js_State *J)
-{
- fz_context *ctx = js_getcontext(J);
- pdf_obj *obj = js_touserdata(J, 0, "pdf_obj");
- pdf_document *pdf;
- fz_buffer *buf;
-
- fz_try(ctx) {
- if (!pdf_is_stream(ctx, obj))
- fz_throw(ctx, FZ_ERROR_GENERIC, "not a stream");
- pdf = pdf_get_indirect_document(ctx, obj);
- buf = pdf_load_raw_stream(ctx, pdf, pdf_to_num(ctx, obj));
- } fz_catch(ctx)
- rethrow(J);
- ffi_pushbuffer(J, buf);
-}
-
static void ffi_PDFObject_forEach(js_State *J)
{
fz_context *ctx = js_getcontext(J);