summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-03-01 19:26:39 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-03-01 19:26:39 +0000
commitd78c3e7a162c8f3f82f6c12f16aca7cb60e0e1d9 (patch)
tree27dd1d095fd7fe63b587e2f2a34e61fcdc93f318
parenta67f95fab9d47a86a2b4e84c48e31af1e7f44f5b (diff)
downloadpango-d78c3e7a162c8f3f82f6c12f16aca7cb60e0e1d9.tar.gz
Don't crash on out-of-BMP values.
Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com> * pango/modules.c: Don't crash on out-of-BMP values. * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type): Return FRIBIDI_TYPE_LTR for all non-BMP characters.
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.pre-1-07
-rw-r--r--ChangeLog.pre-1-107
-rw-r--r--ChangeLog.pre-1-27
-rw-r--r--ChangeLog.pre-1-47
-rw-r--r--ChangeLog.pre-1-67
-rw-r--r--ChangeLog.pre-1-87
-rw-r--r--pango/mini-fribidi/fribidi_get_type.c6
-rw-r--r--pango/modules.c31
9 files changed, 78 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index d07819bd..8655761a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0
index d07819bd..8655761a 100644
--- a/ChangeLog.pre-1-0
+++ b/ChangeLog.pre-1-0
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
index d07819bd..8655761a 100644
--- a/ChangeLog.pre-1-10
+++ b/ChangeLog.pre-1-10
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2
index d07819bd..8655761a 100644
--- a/ChangeLog.pre-1-2
+++ b/ChangeLog.pre-1-2
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4
index d07819bd..8655761a 100644
--- a/ChangeLog.pre-1-4
+++ b/ChangeLog.pre-1-4
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6
index d07819bd..8655761a 100644
--- a/ChangeLog.pre-1-6
+++ b/ChangeLog.pre-1-6
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8
index d07819bd..8655761a 100644
--- a/ChangeLog.pre-1-8
+++ b/ChangeLog.pre-1-8
@@ -1,3 +1,10 @@
+Fri Mar 1 14:25:22 2002 Owen Taylor <otaylor@redhat.com>
+
+ * pango/modules.c: Don't crash on out-of-BMP values.
+
+ * pango/mini-fribidi/fribidi_get_type.c (_pango_fribidi_get_type):
+ Return FRIBIDI_TYPE_LTR for all non-BMP characters.
+
Fri Mar 1 12:11:50 2002 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_line_get_vis2log_map):
diff --git a/pango/mini-fribidi/fribidi_get_type.c b/pango/mini-fribidi/fribidi_get_type.c
index b49b7eb3..3f32d5e0 100644
--- a/pango/mini-fribidi/fribidi_get_type.c
+++ b/pango/mini-fribidi/fribidi_get_type.c
@@ -38,8 +38,12 @@ extern FriBidiCharType prop_to_type[];
FriBidiCharType
_pango_fribidi_get_type(FriBidiChar uch)
{
+ FriBidiPropCharType *block;
int i = uch % 256, j = uch / 256;
- FriBidiPropCharType *block = FriBidiPropertyBlocks[j];
+ if (j > 256)
+ return FRIBIDI_TYPE_LTR;
+
+ block = FriBidiPropertyBlocks[j];
if (block)
#ifdef MEM_OPTIMIZED
return prop_to_type[block[i]];
diff --git a/pango/modules.c b/pango/modules.c
index f280920f..b4346f4c 100644
--- a/pango/modules.c
+++ b/pango/modules.c
@@ -500,7 +500,7 @@ build_map (PangoMapInfo *info)
init_modules();
info->map = map = g_new (PangoMap, 1);
- map->n_submaps = 0;
+ map->n_submaps = 256;
for (i=0; i<256; i++)
{
map->submaps[i].is_leaf = TRUE;
@@ -530,8 +530,18 @@ PangoMapEntry *
pango_map_get_entry (PangoMap *map,
guint32 wc)
{
- PangoSubmap *submap = &map->submaps[wc / 256];
- return submap->is_leaf ? &submap->d.entry : &submap->d.leaves[wc % 256];
+ int i = wc / 256;
+
+ if (i < map->n_submaps)
+ {
+ PangoSubmap *submap = &map->submaps[i];
+ return submap->is_leaf ? &submap->d.entry : &submap->d.leaves[wc % 256];
+ }
+ else
+ {
+ static PangoMapEntry default_entry = { NULL, FALSE };
+ return &default_entry;
+ }
}
/**
@@ -549,11 +559,18 @@ PangoEngine *
pango_map_get_engine (PangoMap *map,
guint32 wc)
{
- PangoSubmap *submap = &map->submaps[wc / 256];
- PangoMapEntry *entry = submap->is_leaf ? &submap->d.entry : &submap->d.leaves[wc % 256];
+ int i = wc / 256;
- if (entry->info)
- return pango_engine_pair_get_engine ((PangoEnginePair *)entry->info);
+ if (i < map->n_submaps)
+ {
+ PangoSubmap *submap = &map->submaps[i];
+ PangoMapEntry *entry = submap->is_leaf ? &submap->d.entry : &submap->d.leaves[wc % 256];
+
+ if (entry->info)
+ return pango_engine_pair_get_engine ((PangoEnginePair *)entry->info);
+ else
+ return NULL;
+ }
else
return NULL;
}