From c7087d3d86b75e16a2dc96f9978d6886ffc2390c Mon Sep 17 00:00:00 2001 From: Guillaume Ayoub Date: Mon, 13 Mar 2023 17:04:15 +0100 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20deepcopy=20streams=20dicts=20wh?= =?UTF-8?q?en=20duplicating=20for=20interpolation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unsurprisingly, deepcopy doesn’t work well on SMask streams :). --- weasyprint/pdf/stream.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/weasyprint/pdf/stream.py b/weasyprint/pdf/stream.py index d08bd974b..a9950836e 100644 --- a/weasyprint/pdf/stream.py +++ b/weasyprint/pdf/stream.py @@ -1,7 +1,6 @@ """PDF stream.""" import io -from copy import deepcopy from functools import lru_cache from hashlib import md5 @@ -370,9 +369,12 @@ def add_image(self, image, image_rendering): return image_name interpolate = 'true' if image_rendering == 'auto' else 'false' - extra = deepcopy(image.extra) + extra = image.extra.copy() extra['Interpolate'] = interpolate if 'SMask' in extra: + extra['SMask'] = pydyf.Stream( + extra['SMask'].stream.copy(), extra['SMask'].extra.copy(), + extra['SMask'].compress) extra['SMask'].extra['Interpolate'] = interpolate xobject = pydyf.Stream(image.stream, extra=extra)