[gimp] app: we should not have any g_assert*() code if possible.



commit f87bc3fe090f6565a7e1d9d7bc2228bce11ea8ef
Author: Jehan <jehan girinstud io>
Date:   Mon Jan 22 12:33:39 2018 +0100

    app: we should not have any g_assert*() code if possible.
    
    Replace all g_assert_not_reached() in app/core/ by g_return_if_reached()
    or g_return_val_if_reached(). GIMP may handle a lot of creative work,
    sometimes unsaved for hours. We should not just crash on purpose.
    g_assert*() could theoretically be turned off on a glib build, but this
    is nearly never done, and is not a solution either (actually it is
    probably even worse because the broken code would just continue on a
    forbidden path). It is much better to return with a warning on such
    forbidden code paths, allowing someone to report a bug without
    experiencing a crash and data loss.
    
    For now, I only took care of g_assert_not_reached() inside app/core.
    More g_assert*() code should be replaced.
    Note: assert are acceptable in plug-ins though, but not in the main
    executable, unless absolutely necessary (something happening so bad that
    crash is better than continuing).

 app/core/gimpchannelpropundo.c       |    4 ++--
 app/core/gimpdrawable-transform.c    |    2 +-
 app/core/gimpfloatingselectionundo.c |    4 ++--
 app/core/gimpgrouplayer.c            |    2 +-
 app/core/gimpgrouplayerundo.c        |    4 ++--
 app/core/gimpimage-arrange.c         |    5 ++++-
 app/core/gimpimage-rotate.c          |    5 ++++-
 app/core/gimpimage.c                 |    2 +-
 app/core/gimpimageundo.c             |    4 ++--
 app/core/gimpitempropundo.c          |    4 ++--
 app/core/gimplayermaskpropundo.c     |    4 ++--
 app/core/gimplayerpropundo.c         |    4 ++--
 12 files changed, 25 insertions(+), 19 deletions(-)
---
diff --git a/app/core/gimpchannelpropundo.c b/app/core/gimpchannelpropundo.c
index 7f8eaef..0de3809 100644
--- a/app/core/gimpchannelpropundo.c
+++ b/app/core/gimpchannelpropundo.c
@@ -76,7 +76,7 @@ gimp_channel_prop_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -103,6 +103,6 @@ gimp_channel_prop_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
diff --git a/app/core/gimpdrawable-transform.c b/app/core/gimpdrawable-transform.c
index 19113d1..00fe4cd 100644
--- a/app/core/gimpdrawable-transform.c
+++ b/app/core/gimpdrawable-transform.c
@@ -347,7 +347,7 @@ gimp_drawable_transform_rotate_point (gint              x,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
diff --git a/app/core/gimpfloatingselectionundo.c b/app/core/gimpfloatingselectionundo.c
index 07e49e7..34fff94 100644
--- a/app/core/gimpfloatingselectionundo.c
+++ b/app/core/gimpfloatingselectionundo.c
@@ -79,7 +79,7 @@ gimp_floating_selection_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -130,6 +130,6 @@ gimp_floating_selection_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
diff --git a/app/core/gimpgrouplayer.c b/app/core/gimpgrouplayer.c
index c124d92..dca2d4a 100644
--- a/app/core/gimpgrouplayer.c
+++ b/app/core/gimpgrouplayer.c
@@ -895,7 +895,7 @@ get_projection_format (GimpProjectable   *projectable,
       return gimp_image_get_format (image, GIMP_GRAY, precision, TRUE);
     }
 
-  g_assert_not_reached ();
+  g_return_val_if_reached (NULL);
 
   return NULL;
 }
diff --git a/app/core/gimpgrouplayerundo.c b/app/core/gimpgrouplayerundo.c
index 5141aef..8287dca 100644
--- a/app/core/gimpgrouplayerundo.c
+++ b/app/core/gimpgrouplayerundo.c
@@ -80,7 +80,7 @@ gimp_group_layer_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -143,6 +143,6 @@ gimp_group_layer_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
diff --git a/app/core/gimpimage-arrange.c b/app/core/gimpimage-arrange.c
index cbbab3c..b88215f 100644
--- a/app/core/gimpimage-arrange.c
+++ b/app/core/gimpimage-arrange.c
@@ -121,6 +121,9 @@ gimp_image_arrange_objects (GimpImage         *image,
       do_y = TRUE;
       compute_offsets (list, alignment);
       break;
+
+    default:
+      g_return_if_reached ();
     }
 
   object_list = sort_by_offset (list);
@@ -365,7 +368,7 @@ compute_offset (GObject           *object,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 
   g_object_set_data (object, "align-offset",
diff --git a/app/core/gimpimage-rotate.c b/app/core/gimpimage-rotate.c
index 7b6021b..56a2e32 100644
--- a/app/core/gimpimage-rotate.c
+++ b/app/core/gimpimage-rotate.c
@@ -109,7 +109,7 @@ gimp_image_rotate (GimpImage        *image,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
       return;
     }
 
@@ -266,6 +266,9 @@ gimp_image_rotate_item_offset (GimpImage        *image,
 
     case GIMP_ROTATE_180:
       return;
+
+    default:
+      g_return_if_reached ();
     }
 
   gimp_item_get_offset (item, &off_x, &off_y);
diff --git a/app/core/gimpimage.c b/app/core/gimpimage.c
index 9597b96..1818ca1 100644
--- a/app/core/gimpimage.c
+++ b/app/core/gimpimage.c
@@ -1448,7 +1448,7 @@ gimp_image_get_proj_format (GimpProjectable *projectable)
                                     gimp_image_get_precision (image), TRUE);
     }
 
-  g_assert_not_reached ();
+  g_return_val_if_reached (NULL);
 
   return NULL;
 }
diff --git a/app/core/gimpimageundo.c b/app/core/gimpimageundo.c
index b46c3e9..a5656a9 100644
--- a/app/core/gimpimageundo.c
+++ b/app/core/gimpimageundo.c
@@ -206,7 +206,7 @@ gimp_image_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -523,7 +523,7 @@ gimp_image_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
diff --git a/app/core/gimpitempropundo.c b/app/core/gimpitempropundo.c
index f3a10ae..434ca08 100644
--- a/app/core/gimpitempropundo.c
+++ b/app/core/gimpitempropundo.c
@@ -148,7 +148,7 @@ gimp_item_prop_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -340,7 +340,7 @@ gimp_item_prop_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
diff --git a/app/core/gimplayermaskpropundo.c b/app/core/gimplayermaskpropundo.c
index 0a9d685..f9e5056 100644
--- a/app/core/gimplayermaskpropundo.c
+++ b/app/core/gimplayermaskpropundo.c
@@ -80,7 +80,7 @@ gimp_layer_mask_prop_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -117,6 +117,6 @@ gimp_layer_mask_prop_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
diff --git a/app/core/gimplayerpropundo.c b/app/core/gimplayerpropundo.c
index e01facd..c2a50c2 100644
--- a/app/core/gimplayerpropundo.c
+++ b/app/core/gimplayerpropundo.c
@@ -87,7 +87,7 @@ gimp_layer_prop_undo_constructed (GObject *object)
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }
 
@@ -152,6 +152,6 @@ gimp_layer_prop_undo_pop (GimpUndo            *undo,
       break;
 
     default:
-      g_assert_not_reached ();
+      g_return_if_reached ();
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]