diff options
author | Tor Andersson <tor@ghostscript.com> | 2010-08-11 00:33:58 +0000 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2010-08-11 00:33:58 +0000 |
commit | 08d029edaf700e2b1800621e981e4aafb5e4a4e5 (patch) | |
tree | 37210c47b3f7d893a2cd772ebd723151c17176eb | |
parent | 14c3cd048bb7a4b87a603d35b8d1ceba7920432f (diff) | |
download | mupdf-08d029edaf700e2b1800621e981e4aafb5e4a4e5.tar.xz |
Cache the result of resourcesuseblending in the object structure to gracefully deal with cyclic dependency chains in resource dictionaries.
-rw-r--r-- | mupdf/pdf_page.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/mupdf/pdf_page.c b/mupdf/pdf_page.c index ff812827..949abd4e 100644 --- a/mupdf/pdf_page.c +++ b/mupdf/pdf_page.c @@ -118,11 +118,11 @@ pdf_resourcesuseblending(fz_obj *rdb) int i; /* stop on cyclic resource dependencies */ - if (fz_dictgets(rdb, ".seen")) - return 0; + if (fz_dictgets(rdb, ".useBM")) + return fz_tobool(fz_dictgets(rdb, ".useBM")); - tmp = fz_newnull(); - fz_dictputs(rdb, ".seen", tmp); + tmp = fz_newbool(0); + fz_dictputs(rdb, ".useBM", tmp); fz_dropobj(tmp); dict = fz_dictgets(rdb, "ExtGState"); @@ -140,11 +140,12 @@ pdf_resourcesuseblending(fz_obj *rdb) if (pdf_xobjectusesblending(fz_dictgetval(dict, i))) goto found; - fz_dictdels(rdb, ".seen"); return 0; found: - fz_dictdels(rdb, ".seen"); + tmp = fz_newbool(1); + fz_dictputs(rdb, ".useBM", tmp); + fz_dropobj(tmp); return 1; } |