summaryrefslogtreecommitdiff
path: root/src/drivers/X11/Fl_X11_Window_Driver.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2017-02-22 11:33:12 +0000
committerManolo Gouy <Manolo>2017-02-22 11:33:12 +0000
commitaa917d709c242dc5c46253758d7138fe25ded24a (patch)
tree813c83380bd66922ec952cae09ef28615ba51670 /src/drivers/X11/Fl_X11_Window_Driver.cxx
parent393e48175602669918899fe065770a6bbaa8daa4 (diff)
Avoid potential crash occurring after calling win->show(0,0)
See [fltk.general] Drawing to Fl_Offscreen received signal SIGSEGV, Segmentation fault. that is unrelated to Fl_Offscreen but caused by calling win->show(0,0). git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12179 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/X11/Fl_X11_Window_Driver.cxx')
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx
index 0f16c7812..f10ed307a 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.cxx
+++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx
@@ -533,15 +533,17 @@ void Fl_X11_Window_Driver::show_with_args_begin() {
void Fl_X11_Window_Driver::show_with_args_end(int argc, char **argv) {
- // set the command string, used by state-saving window managers:
- int j;
- int n=0; for (j=0; j<argc; j++) n += strlen(argv[j])+1;
- char *buffer = new char[n];
- char *p = buffer;
- for (j=0; j<argc; j++) for (const char *q = argv[j]; (*p++ = *q++););
- XChangeProperty(fl_display, fl_xid(pWindow), XA_WM_COMMAND, XA_STRING, 8, 0,
- (unsigned char *)buffer, p-buffer-1);
- delete[] buffer;
+ if (argc) {
+ // set the command string, used by state-saving window managers:
+ int j;
+ int n=0; for (j=0; j<argc; j++) n += strlen(argv[j])+1;
+ char *buffer = new char[n];
+ char *p = buffer;
+ for (j=0; j<argc; j++) for (const char *q = argv[j]; (*p++ = *q++););
+ XChangeProperty(fl_display, fl_xid(pWindow), XA_WM_COMMAND, XA_STRING, 8, 0,
+ (unsigned char *)buffer, p-buffer-1);
+ delete[] buffer;
+ }
}