summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Robert <Adrian.B.Robert@gmail.com>2009-07-23 13:21:07 +0000
committerAdrian Robert <Adrian.B.Robert@gmail.com>2009-07-23 13:21:07 +0000
commit9458b4ae7c164c9f4507449e3a19d17e06903eab (patch)
tree5be84eca3835db2b572fa861451eef4f5affbc7b
parent5eff178c768b237ff84e46c5485b1d1f505a6854 (diff)
downloademacs-9458b4ae7c164c9f4507449e3a19d17e06903eab.tar.gz
* nsterm.m (ns_lookup_indexed_color): Check for bad index. (ns_index_color): Init unused slot to 0. (ns_dumpglyphs_box_or_relief): Replace useless xassert with an if(). Bug 3714, possibly 3082.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/nsterm.m7
2 files changed, 10 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d40f4f31806..88bb9d6d6ee 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,6 +1,11 @@
2009-07-23 Adrian Robert <Adrian.B.Robert@gmail.com>
* nsterm.m (EmacsView-keyUp:): Only act when running under Tiger.
+ Bugs 3792, 3720, 2402.
+ (ns_lookup_indexed_color): Check for bad index.
+ (ns_index_color): Init unused slot to 0.
+ (ns_dumpglyphs_box_or_relief): Replace useless xassert with an if().
+ Bug 3714, possibly 3082.
2009-07-21 Chong Yidong <cyd@stupidchicken.com>
diff --git a/src/nsterm.m b/src/nsterm.m
index e140b0eaefb..3831b5cf959 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -1249,6 +1249,8 @@ NSColor *
ns_lookup_indexed_color (unsigned long idx, struct frame *f)
{
struct ns_color_table *color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
+ if (idx < 1 || idx >= color_table->avail)
+ return nil;
return color_table->colors[idx];
}
@@ -1266,6 +1268,7 @@ ns_index_color (NSColor *color, struct frame *f)
color_table->avail = 1; /* skip idx=0 as marker */
color_table->colors
= (NSColor **)xmalloc (color_table->size * sizeof (NSColor *));
+ color_table->colors[0] = nil;
color_table->empty_indices = [[NSMutableSet alloc] init];
}
@@ -2650,9 +2653,9 @@ ns_dumpglyphs_box_or_relief (struct glyph_string *s)
r = ns_fix_rect_ibw (r, FRAME_INTERNAL_BORDER_WIDTH (s->f),
FRAME_PIXEL_WIDTH (s->f));
- if (s->face->box == FACE_SIMPLE_BOX)
+ /* TODO: Sometimes box_color is 0 and this seems wrong; should investigate. */
+ if (s->face->box == FACE_SIMPLE_BOX && s->face->box_color)
{
- xassert (s->face->box_color != nil);
ns_draw_box (r, abs (thickness),
ns_lookup_indexed_color (face->box_color, s->f),
left_p, right_p);