From e306c53d9e31c7ee09a131c765cbcec67fdd2565 Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Wed, 7 Aug 2013 00:42:26 +0100 Subject: GTK: make presentError: methods cope with null errors We can't always guarantee that library code will produce an error object when things fail; default to "unknown error" if the error object is null or does not have a message. --- tikzit/src/gtk/Window.m | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'tikzit/src') diff --git a/tikzit/src/gtk/Window.m b/tikzit/src/gtk/Window.m index 7cb1e65..2d9e63a 100644 --- a/tikzit/src/gtk/Window.m +++ b/tikzit/src/gtk/Window.m @@ -394,47 +394,63 @@ static void update_paste_action (GtkClipboard *clipboard, GdkEvent *event, GtkAc } - (void) presentError:(NSError*)error { + const gchar *errorDesc = "unknown error"; + if (error && [error localizedDescription]) { + errorDesc = [[error localizedDescription] UTF8String]; + } GtkWidget *dialog = gtk_message_dialog_new (window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", - [[error localizedDescription] UTF8String]); + errorDesc); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } - (void) presentError:(NSError*)error withMessage:(NSString*)message { + const gchar *errorDesc = "unknown error"; + if (error && [error localizedDescription]) { + errorDesc = [[error localizedDescription] UTF8String]; + } GtkWidget *dialog = gtk_message_dialog_new (window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s: %s", [message UTF8String], - [[error localizedDescription] UTF8String]); + errorDesc); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } - (void) presentGError:(GError*)error { + const gchar *errorDesc = "unknown error"; + if (error && error->message) { + errorDesc = error->message; + } GtkWidget *dialog = gtk_message_dialog_new (window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", - error->message); + errorDesc); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } - (void) presentGError:(GError*)error withMessage:(NSString*)message { + const gchar *errorDesc = "unknown error"; + if (error && error->message) { + errorDesc = error->message; + } GtkWidget *dialog = gtk_message_dialog_new (window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s: %s", [message UTF8String], - error->message); + errorDesc); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } -- cgit v1.2.3