summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2019-11-09 21:01:29 -0500
committerThomas E. Dickey <dickey@invisible-island.net>2019-11-09 21:01:29 -0500
commit1bf4dfce4431b016a2970e195ea55188288264f6 (patch)
treecf65666adb371976ee430a7a7482761cbd800886
parentc7bdc7c0b75b6ec4df0bc180a20cf55ed0f43281 (diff)
downloadxorg-lib-libXt-1bf4dfce4431b016a2970e195ea55188288264f6.tar.gz
issue #12: work within existing interface which attempts to obtain the
display-pointer from the screen-pointer but fails when the screen-pointer itself is invalid. Ensure that the screen-pointer is valid by checking the default_screen value against the valid range, and forcing it to zero if it is out of bounds. Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
-rw-r--r--src/Display.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/Display.c b/src/Display.c
index 0bfaac9..f256918 100644
--- a/src/Display.c
+++ b/src/Display.c
@@ -249,6 +249,7 @@ InitPerDisplay(Display *dpy,
return pd;
}
+#define THIS_FUNC "XtOpenDisplay"
Display *
XtOpenDisplay(XtAppContext app,
_Xconst _XtString displayName,
@@ -273,6 +274,19 @@ XtOpenDisplay(XtAppContext app,
&language : NULL));
UNLOCK_PROCESS;
d = XOpenDisplay(displayName);
+ if (ScreenCount(d) <= 0) {
+ XtErrorMsg("nullDisplay",
+ THIS_FUNC, XtCXtToolkitError,
+ THIS_FUNC " requires a non-NULL display",
+ NULL, NULL);
+ }
+ if (DefaultScreen(d) < 0 || DefaultScreen(d) >= ScreenCount(d)) {
+ XtWarningMsg("nullDisplay",
+ THIS_FUNC, XtCXtToolkitError,
+ THIS_FUNC " default screen is invalid (ignoring)",
+ NULL, NULL);
+ DefaultScreen(d) = 0;
+ }
if (!applName && !(applName = getenv("RESOURCE_NAME"))) {
if (*argc > 0 && argv[0] && *argv[0]) {