}
/* A buffer for storing X error messages. */
-static char (*x_caught_error_message)[200];
+static char *x_caught_error_message;
+#define X_CAUGHT_ERROR_MESSAGE_SIZE 200
/* An X error handler which stores the error message in
x_caught_error_message. This is what's installed when
XErrorEvent *error;
{
XGetErrorText (display, error->error_code,
- *x_caught_error_message, sizeof (*x_caught_error_message));
+ x_caught_error_message, X_CAUGHT_ERROR_MESSAGE_SIZE);
}
/* Set up the error buffer. */
x_caught_error_message
- = (char (*)[200]) xmalloc (sizeof (*x_caught_error_message));
- (*x_caught_error_message)[0] = '\0';
+ = (char*) xmalloc (X_CAUGHT_ERROR_MESSAGE_SIZE);
+ x_caught_error_message[0] = '\0';
/* Install our little error handler. */
XHandleError (x_error_catcher);
/* Make sure to catch any errors incurred so far. */
XSync (x_current_display, False);
- if ((*x_caught_error_message)[0])
+ if (x_caught_error_message[0])
{
- char buf[256];
-
- sprintf (buf, format, *x_caught_error_message);
- xfree (x_caught_error_message);
+ char buf[X_CAUGHT_ERROR_MESSAGE_SIZE + 56];
+ sprintf (buf, format, x_caught_error_message);
x_uncatch_errors ();
error (buf);
}
x_uncatch_errors ()
{
xfree (x_caught_error_message);
+ x_caught_error_message = 0;
XHandleError (x_error_quitter);
}