Skip to content

Commit

Permalink
Fl_Text_Display::wrap_mode() would crash if no buffer was
Browse files Browse the repository at this point in the history
associated with the widget (STR #1069)



git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4647 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
  • Loading branch information
michaelrsweet committed Nov 9, 2005
1 parent 0f41b3b commit 258c3e8
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
2 changes: 2 additions & 0 deletions CHANGES
Expand Up @@ -3,6 +3,8 @@ CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #571, STR #648, STR #692, STR
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
STR #969)
- Fl_Text_Display::wrap_mode() would crash if no buffer
was associated with the widget (STR #1069)
- Updated the default label and text colors of all widgets
to use FL_FOREGROUND_COLOR instead of FL_BLACK (STR
#1052)
Expand Down
35 changes: 22 additions & 13 deletions src/Fl_Text_Display.cxx
Expand Up @@ -658,19 +658,28 @@ void Fl_Text_Display::wrap_mode(int wrap, int wrapMargin) {
mWrapMargin = wrapMargin;
mContinuousWrap = wrap;

/* wrapping can change change the total number of lines, re-count */
mNBufferLines = count_lines(0, buffer()->length(), true);

/* changing wrap margins wrap or changing from wrapped mode to non-wrapped
can leave the character at the top no longer at a line start, and/or
change the line number */
mFirstChar = line_start(mFirstChar);
mTopLineNum = count_lines(0, mFirstChar, true) + 1;
reset_absolute_top_line_number();

/* update the line starts array */
calc_line_starts(0, mNVisibleLines);
calc_last_char();
if (buffer()) {
/* wrapping can change change the total number of lines, re-count */
mNBufferLines = count_lines(0, buffer()->length(), true);

/* changing wrap margins wrap or changing from wrapped mode to non-wrapped
can leave the character at the top no longer at a line start, and/or
change the line number */
mFirstChar = line_start(mFirstChar);
mTopLineNum = count_lines(0, mFirstChar, true) + 1;

reset_absolute_top_line_number();

/* update the line starts array */
calc_line_starts(0, mNVisibleLines);
calc_last_char();
} else {
// No buffer, so just clear the state info for later...
mNBufferLines = 0;
mFirstChar = 0;
mTopLineNum = 1;
mAbsTopLineNum = 0;
}

resize(x(), y(), w(), h());
}
Expand Down

0 comments on commit 258c3e8

Please sign in to comment.