summaryrefslogtreecommitdiff
path: root/extra/cairo/cairo-1.12.2-ignore-charset-for-non-cid-fonts.patch
blob: e43a1031274a62e3208b40e6e478f17814d29e01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
From 2f1d6b27e8b78c77346a5b603114b54400e57d83 Mon Sep 17 00:00:00 2001
From: Adrian Johnson <ajohnson@redneon.com>
Date: Thu, 07 Jun 2012 09:48:52 +0000
Subject: cff-subsetting: Ignore charset for non cid fonts

Fixes crash in https://bugzilla.gnome.org/show_bug.cgi?id=677422
---
diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c
index db6fdf7..6f0cd66 100644
--- a/src/cairo-cff-subset.c
+++ b/src/cairo-cff-subset.c
@@ -1178,14 +1178,16 @@ cairo_cff_font_read_top_dict (cairo_cff_font_t *font)
         goto fail;
     font->num_glyphs = _cairo_array_num_elements (&font->charstrings_index);
 
-    operand = cff_dict_get_operands (font->top_dict, CHARSET_OP, &size);
-    if (font->is_cid && !operand)
-	return CAIRO_INT_STATUS_UNSUPPORTED;
+    if (font->is_cid) {
+	 operand = cff_dict_get_operands (font->top_dict, CHARSET_OP, &size);
+	 if (!operand)
+	      return CAIRO_INT_STATUS_UNSUPPORTED;
 
-    decode_integer (operand, &offset);
-    font->charset = font->data + offset;
-    if (font->charset >= font->data_end)
-	return CAIRO_INT_STATUS_UNSUPPORTED;
+	 decode_integer (operand, &offset);
+	 font->charset = font->data + offset;
+	 if (font->charset >= font->data_end)
+	      return CAIRO_INT_STATUS_UNSUPPORTED;
+    }
 
     if (!font->is_opentype)
         cairo_cff_font_read_font_metrics (font, font->top_dict);
--
cgit v0.9.0.2-2-gbebe