diff -Nru xloadimage.4.1.vanilla/xloadimage.c xloadimage.4.1/xloadimage.c --- xloadimage.4.1.vanilla/xloadimage.c 2006-01-04 23:52:21.000000000 +0100 +++ xloadimage.4.1/xloadimage.c 2006-01-04 23:57:20.000000000 +0100 @@ -236,18 +236,6 @@ exit(0); } - /* start talking to the display - */ - - opt= getOption(global_options, DISPLAY); - dname= (opt ? opt->info.display : NULL); - if (! (Disp= disp= XOpenDisplay(dname))) { - printf("%s: Cannot open display\n", XDisplayName(dname)); - exit(1); - } - Scrn= scrn= DefaultScreen(disp); - XSetErrorHandler(errorHandler); - /* background ourselves if the user asked us to */ @@ -264,6 +252,18 @@ } #endif /* !NO_FORK */ + /* start talking to the display + */ + + opt= getOption(global_options, DISPLAY); + dname= (opt ? opt->info.display : NULL); + if (! (Disp= disp= XOpenDisplay(dname))) { + printf("%s: Cannot open display\n", XDisplayName(dname)); + exit(1); + } + Scrn= scrn= DefaultScreen(disp); + XSetErrorHandler(errorHandler); + dispimage= NULL; onroot= (getOption(global_options, ONROOT) != NULL); @@ -542,6 +542,7 @@ dumpImage(dispimage, dump->info.dump.type, dump->info.dump.file, verbose); freeImage(dispimage); dispimage= NULL; + XCloseDisplay(disp); exit(0); }