fix segfaut from uninitialized focused_screen pointer
Dana Jansens danakj@orodu.net
5 files changed,
11 insertions(+),
6 deletions(-)
M
CHANGELOG
→
CHANGELOG
@@ -1,7 +1,12 @@
Changelog for Openbox: 1.2.0: - * make image dithering value load correctly + * more focus code changes. also fixes a segfault from + last round of focus changes. (Ben Jansens) + + * make image dithering value load correctly. (Ben Jansens) + + * fix segfault with multiple screens. (Shaleh Perry) 1.1.0: * improved focused window logic to remove a segfault
M
src/BaseDisplay.cc
→
src/BaseDisplay.cc
@@ -519,7 +519,6 @@
void BaseDisplay::addTimer(BTimer *timer) { ASSERT(timer != (BTimer *) 0); - printf("ADDING TIMER\n"); TimerList::iterator it; for (it = timerList.begin(); it != timerList.end(); ++it) {@@ -535,7 +534,6 @@ }
void BaseDisplay::removeTimer(BTimer *timer) { - printf("REMOVING TIMER\n"); timerList.remove(timer); }
M
src/Screen.cc
→
src/Screen.cc
@@ -225,6 +225,7 @@ #ifdef SLIT
slit = NULL; #endif // SLIT toolbar = NULL; + current_workspace = (Workspace *) 0; #ifdef HAVE_GETPID pid_t bpid = getpid();
M
src/Toolbar.cc
→
src/Toolbar.cc
@@ -725,7 +725,9 @@
void Toolbar::redrawWindowLabel(Bool redraw) { OpenboxWindow *foc = screen.getOpenbox().focusedWindow(); - if (foc != (OpenboxWindow *) 0) { + if (foc == (OpenboxWindow *) 0) { + XClearWindow(display, frame.window_label); + } else { if (redraw) XClearWindow(display, frame.window_label);@@ -780,8 +782,6 @@ *foc->getTitle(), dlen);
else XDrawString(display, frame.window_label, style->w_text_gc, dx, (style->font->ascent + 1), *foc->getTitle(), dlen); - } else { - XClearWindow(display, frame.window_label); } }
M
src/openbox.cc
→
src/openbox.cc
@@ -186,6 +186,7 @@ resource.menu_file = resource.style_file = NULL;
resource.titlebar_layout = NULL; resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0; + focused_screen = (BScreen *) 0; masked_window = NULL; masked = None;