summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mupdf/pdf_colorspace1.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/mupdf/pdf_colorspace1.c b/mupdf/pdf_colorspace1.c
index 8480d6fe..69d0e98e 100644
--- a/mupdf/pdf_colorspace1.c
+++ b/mupdf/pdf_colorspace1.c
@@ -476,7 +476,6 @@ loadseparation(fz_colorspace **csp, pdf_xref *xref, fz_obj *array)
error = pdf_loadcolorspace(&base, xref, baseobj);
if (error)
return fz_rethrow(error, "cannot load base colorspace");
- fz_keepcolorspace(base);
error = pdf_loadfunction(&tint, xref, tintobj);
if (error)
@@ -491,8 +490,11 @@ loadseparation(fz_colorspace **csp, pdf_xref *xref, fz_obj *array)
n == 1 ? "Separation" : "DeviceN", n,
separationtoxyz, nil, dropseparation);
- cs->base = base;
- cs->tint = tint;
+ cs->base = fz_keepcolorspace(base);
+ cs->tint = pdf_keepfunction(tint);
+
+ fz_dropcolorspace(base);
+ pdf_dropfunction(tint);
pdf_logrsrc("}\n");
@@ -543,7 +545,6 @@ loadindexed(fz_colorspace **csp, pdf_xref *xref, fz_obj *array)
error = pdf_loadcolorspace(&base, xref, baseobj);
if (error)
return fz_rethrow(error, "cannot load base colorspace");
- fz_keepcolorspace(base);
pdf_logrsrc("base %s\n", base->name);
@@ -551,9 +552,11 @@ loadindexed(fz_colorspace **csp, pdf_xref *xref, fz_obj *array)
initcs((fz_colorspace*)cs, "Indexed", 1, nil, nil, dropindexed);
- cs->base = base;
+ cs->base = fz_keepcolorspace(base);
cs->high = fz_toint(highobj);
+ fz_dropcolorspace(base);
+
n = base->n * (cs->high + 1);
cs->lookup = fz_malloc(n);