From 47cdc1933a475c34e8cbe51395f992d2c4696608 Mon Sep 17 00:00:00 2001 From: Adam Richter Date: Fri, 10 May 2019 09:51:58 -0700 Subject: [PATCH] xquartz: Replace assert with FatalError in hw/xquartz/darwin.c. Thanks to Walter Harms and Matthieu Herrb for recommending replacement of assert statements in places that are not truly internal inconsistencies with proper error handling when possible. --- hw/xquartz/darwin.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c index 1026bcf02..0c60c4bab 100644 --- a/hw/xquartz/darwin.c +++ b/hw/xquartz/darwin.c @@ -525,7 +525,11 @@ InitInput(int argc, char **argv) result = AllocDevicePair(serverClient, "xquartz virtual", &darwinPointer, &darwinKeyboard, DarwinMouseProc, DarwinKeybdProc, FALSE); - assert(result == Success); + if (result != Success) { + FatalError("InitInput: AllocDevicePair (...,\"xquartz virtual\",...) " + "returned X windows error %d.\n", + result); + } /* here's the snippet from the current gdk sources: if (!strcmp (tmp_name, "pointer")) @@ -542,15 +546,26 @@ InitInput(int argc, char **argv) */ darwinTabletStylus = AddInputDevice(serverClient, DarwinTabletProc, TRUE); - assert(darwinTabletStylus); + if (!darwinTabletStylus) { + FatalError("InitInput: " + "AddInputDevice(serverClient, DarwinTabletProc, TRUE) " + "failed.\n"); + } + darwinTabletStylus->name = strdup("pen"); darwinTabletCursor = AddInputDevice(serverClient, DarwinTabletProc, TRUE); - assert(darwinTabletCursor); + if(!darwinTabletCursor) { + FatalError("InitInput: " + "AddInputDevice(serverClient, DarwinTabletProc, TRUE) " + "failed.\n"); + } darwinTabletCursor->name = strdup("cursor"); darwinTabletEraser = AddInputDevice(serverClient, DarwinTabletProc, TRUE); - assert(darwinTabletEraser); + if(!darwinTabletEraser) { + FatalError("InitInput: AddInputDevice(serverClient, DarwinTabletProc, TRUE) failed.\n"); + } darwinTabletEraser->name = strdup("eraser"); DarwinEQInit(); @@ -681,10 +696,16 @@ OsVendorInit(void) char *home = getenv("HOME"); int nbytes; - assert(home); + if (!home) { + FatalError("darwin OsVendorInit: " + "getenv(\"HOME\") returned NULL.\n"); + } nbytes = asprintf(&lf, "%s/Library/Logs/X11", home); - assert(nbytes > 0); + if (nbytes <= 0) { + FatalError("darwin OsVendorInit: " + "asprintf of log directory name failed.\n"); + } /* Ignore errors. If EEXIST, we don't care. If anything else, * LogInit will handle it for us. @@ -694,7 +715,10 @@ OsVendorInit(void) nbytes = asprintf(&lf, "%s/Library/Logs/X11/%s.log", home, bundle_id_prefix); - assert(nbytes > 0); + if (nbytes <= 0) { + FatalError("darwin OsVendorInit: " + "asprintf of log file name failed.\n"); + } LogInit(lf, ".old"); free(lf);