From 08d029edaf700e2b1800621e981e4aafb5e4a4e5 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 11 Aug 2010 00:33:58 +0000 Subject: Cache the result of resourcesuseblending in the object structure to gracefully deal with cyclic dependency chains in resource dictionaries. --- mupdf/pdf_page.c | 13 +++++++------ 1 file 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; } -- cgit v1.2.3