From 274b50bbab5e14fb65b175a542c90004c08fa5d6 Mon Sep 17 00:00:00 2001 From: fredkiefer Date: Fri, 31 Oct 2014 14:12:44 +0000 Subject: [PATCH] * Source/NSLayoutManager.m (-drawBackgroundForGlyphRange:atPoint:): Make save against glyph_run being null. Should fix part of #43454. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@38141 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/NSLayoutManager.m | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 80dead287..ac87b6be6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-10-31 Fred Kiefer + + * Source/NSLayoutManager.m + (-drawBackgroundForGlyphRange:atPoint:): Make save against + glyph_run being null. Should fix part of #43454. + 2014-10-25 Fred Kiefer * Source/NSParagraphStyle.m, diff --git a/Source/NSLayoutManager.m b/Source/NSLayoutManager.m index 873c29b1b..7cba4ed79 100644 --- a/Source/NSLayoutManager.m +++ b/Source/NSLayoutManager.m @@ -1408,12 +1408,14 @@ container i = range.location - glyph_pos; last_color = nil; first_char_pos = char_pos; - while (1) + while ((glyph_run != nil) && (i + glyph_pos < range.location + range.length)) { NSRange r = NSMakeRange(glyph_pos + i, glyph_run->head.glyph_length - i); if (NSMaxRange(r) > NSMaxRange(range)) - r.length = NSMaxRange(range) - r.location; + { + r.length = NSMaxRange(range) - r.location; + } color = [_textStorage attribute: NSBackgroundColorAttributeName atIndex: char_pos @@ -1446,8 +1448,6 @@ container char_pos += glyph_run->head.char_length; i = 0; glyph_run = (glyph_run_t *)glyph_run->head.next; - if (i + glyph_pos >= range.location + range.length) - break; } if (!_selected_range.length || _selected_range.location == NSNotFound)