/* Compile with cc -o testcase testcase.c -lX11 -lXxf86misc */ #include #include #include #include #include extern int _XDefaultError(Display *dpy, XErrorEvent *event); static int myXErrorCallback(Display *dpy, XErrorEvent *event) { if (event->error_code == BadValue) { printf("TEST PASSED: illegal call returned BadValue\n"); XCloseDisplay(dpy); exit(0); } else { return _XDefaultError(dpy, event); } } int main(int argc, char **argv) { int testno; int result = 0; Display *dpy; long screenNum = 0xF000; int major, minor; char *answer; if (argc == 2) { screenNum = strtol(argv[1], NULL, 0); } dpy = XOpenDisplay(NULL); if (dpy == NULL) { fprintf(stderr, "Can't open display %s\n", XDisplayName(NULL)); exit(1); } if (XF86MiscQueryVersion(dpy, &major, &minor) == False) { printf("XFree86-Misc Extension NOT present on display - cannot test\n"); return 1; } XSync(dpy, False); XSetErrorHandler(myXErrorCallback); XF86MiscPassMessage(dpy, screenNum, "CrashTest", "Dummy", &answer); XSync(dpy, False); XCloseDisplay(dpy); printf("TEST FAILED: No error messages recieved!\n"); }