diff options
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 15 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 15 | ||||
-rw-r--r-- | gdk/gdk.c | 4 | ||||
-rw-r--r-- | gdk/x11/gdkmain-x11.c | 4 | ||||
-rw-r--r-- | gtk/gtkcontainer.h | 6 | ||||
-rw-r--r-- | gtk/gtkobject.c | 69 | ||||
-rw-r--r-- | gtk/gtkobject.h | 6 | ||||
-rw-r--r-- | gtk/gtkpreview.c | 7 |
13 files changed, 180 insertions, 21 deletions
@@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 92ba1f3ddd..2c1c9ee7c7 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 92ba1f3ddd..2c1c9ee7c7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 92ba1f3ddd..2c1c9ee7c7 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 92ba1f3ddd..2c1c9ee7c7 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 92ba1f3ddd..2c1c9ee7c7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 92ba1f3ddd..2c1c9ee7c7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,18 @@ +Sat Mar 7 20:20:53 1998 Tim Janik <timj@gimp.org> + + * gtk/gtkobject.c: + (gtk_object_check_cast): + (gtk_object_check_class_cast): + made the object/class cast checks much more descriptive, based on + gtk-draco-980305-2.patch.gz and gtk-draco-980306-1.patch.gz but + optimized for common code path. + + * gtk/gtkpreview.c: added a few extra checks for the visual + (gtk-draco-980305-0.patch.gz). + + * gdk/gdk.c (gdk_signal): abort() on a signal if G_ENABLE_DEBUG + is defined, so we dump core (gtk-draco-980305-0.patch.gz). + Sat Mar 7 01:07:24 1998 Owen Taylor <owt1@cornell.edu> * gtk/gtkrange.c (gtk_range_expose): Fixed the vscrollbar @@ -3116,7 +3116,11 @@ gdk_signal (int sig_num) } g_print ("\n** ERROR **: %s caught\n", sig); +#ifdef G_ENABLE_DEBUG + abort (); +#else /* !G_ENABLE_DEBUG */ gdk_exit (1); +#endif /* !G_ENABLE_DEBUG */ } static void diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c index fe94fbe49e..b778d3d795 100644 --- a/gdk/x11/gdkmain-x11.c +++ b/gdk/x11/gdkmain-x11.c @@ -3116,7 +3116,11 @@ gdk_signal (int sig_num) } g_print ("\n** ERROR **: %s caught\n", sig); +#ifdef G_ENABLE_DEBUG + abort (); +#else /* !G_ENABLE_DEBUG */ gdk_exit (1); +#endif /* !G_ENABLE_DEBUG */ } static void diff --git a/gtk/gtkcontainer.h b/gtk/gtkcontainer.h index 146ab27f6a..3585d20e4b 100644 --- a/gtk/gtkcontainer.h +++ b/gtk/gtkcontainer.h @@ -29,9 +29,9 @@ extern "C" { #endif /* __cplusplus */ -#define GTK_CONTAINER(obj) GTK_CHECK_CAST (obj, gtk_container_get_type (), GtkContainer) -#define GTK_CONTAINER_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_container_get_type, GtkContainerClass) -#define GTK_IS_CONTAINER(obj) GTK_CHECK_TYPE (obj, gtk_container_get_type ()) +#define GTK_CONTAINER(obj) (GTK_CHECK_CAST ((obj), gtk_container_get_type (), GtkContainer)) +#define GTK_CONTAINER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), gtk_container_get_type, GtkContainerClass)) +#define GTK_IS_CONTAINER(obj) (GTK_CHECK_TYPE ((obj), gtk_container_get_type ())) #define GTK_TYPE_CONTAINER (gtk_container_get_type ()) diff --git a/gtk/gtkobject.c b/gtk/gtkobject.c index d4993f53dc..b57eacbef6 100644 --- a/gtk/gtkobject.c +++ b/gtk/gtkobject.c @@ -1174,20 +1174,49 @@ gtk_object_get_user_data (GtkObject *object) * results: *****************************************/ +static gchar* +gtk_object_descriptive_type_name (GtkType type) +{ + gchar *name; + + name = gtk_type_name (type); + if (!name) + name = "(unknown)"; + + return name; +} + GtkObject* gtk_object_check_cast (GtkObject *obj, GtkType cast_type) { - if (obj && obj->klass && !gtk_type_is_a (obj->klass->type, cast_type)) + if (!obj) { - gchar *from_name = gtk_type_name (obj->klass->type); - gchar *to_name = gtk_type_name (cast_type); - - g_warning ("invalid cast from \"%s\" to \"%s\"", - from_name ? from_name : "(unknown)", - to_name ? to_name : "(unknown)"); + g_warning ("invalid cast from (NULL) pointer to `%s'", + gtk_object_descriptive_type_name (cast_type)); + return obj; } - + if (!obj->klass) + { + g_warning ("invalid unclassed pointer in cast to `%s'", + gtk_object_descriptive_type_name (cast_type)); + return obj; + } + if (obj->klass->type < GTK_TYPE_OBJECT) + { + g_warning ("invalid class type `%s' in cast to `%s'", + gtk_object_descriptive_type_name (obj->klass->type), + gtk_object_descriptive_type_name (cast_type)); + return obj; + } + if (!gtk_type_is_a (obj->klass->type, cast_type)) + { + g_warning ("invalid cast from `%s' to `%s'", + gtk_object_descriptive_type_name (obj->klass->type), + gtk_object_descriptive_type_name (cast_type)); + return obj; + } + return obj; } @@ -1203,10 +1232,26 @@ GtkObjectClass* gtk_object_check_class_cast (GtkObjectClass *klass, GtkType cast_type) { - if (klass && !gtk_type_is_a (klass->type, cast_type)) - g_warning ("invalid cast from \"%sClass\" to \"%sClass\"", - gtk_type_name (klass->type), - gtk_type_name (cast_type)); + if (!klass) + { + g_warning ("invalid class cast from (NULL) pointer to `%s'", + gtk_object_descriptive_type_name (cast_type)); + return klass; + } + if (klass->type < GTK_TYPE_OBJECT) + { + g_warning ("invalid class type `%s' in class cast to `%s'", + gtk_object_descriptive_type_name (klass->type), + gtk_object_descriptive_type_name (cast_type)); + return klass; + } + if (!gtk_type_is_a (klass->type, cast_type)) + { + g_warning ("invalid class cast from `%s' to `%s'", + gtk_object_descriptive_type_name (klass->type), + gtk_object_descriptive_type_name (cast_type)); + return klass; + } return klass; } diff --git a/gtk/gtkobject.h b/gtk/gtkobject.h index e7ac103849..ef77a91db6 100644 --- a/gtk/gtkobject.h +++ b/gtk/gtkobject.h @@ -42,17 +42,17 @@ extern "C" { #else /* !GTK_NO_CHECK_CASTS */ #define GTK_CHECK_CAST(obj,cast_type,cast) \ - ((cast*) gtk_object_check_cast ((GtkObject*) (obj), cast_type)) + ((cast*) gtk_object_check_cast ((GtkObject*) (obj), (cast_type))) #define GTK_CHECK_CLASS_CAST(klass,cast_type,cast) \ - ((cast*) gtk_object_check_class_cast ((GtkObjectClass*) (klass), cast_type)) + ((cast*) gtk_object_check_class_cast ((GtkObjectClass*) (klass), (cast_type))) #endif /* GTK_NO_CHECK_CASTS */ /* Determines whether 'obj' is a type of 'otype'. */ -#define GTK_CHECK_TYPE(obj,otype) (gtk_type_is_a (((GtkObject*) (obj))->klass->type, otype)) +#define GTK_CHECK_TYPE(obj,otype) (gtk_type_is_a (((GtkObject*) (obj))->klass->type, (otype))) /* Macro for casting a pointer to a GtkObject pointer. diff --git a/gtk/gtkpreview.c b/gtk/gtkpreview.c index 1af2e73d9c..34e1b31af3 100644 --- a/gtk/gtkpreview.c +++ b/gtk/gtkpreview.c @@ -222,7 +222,7 @@ gtk_preview_uninit () GtkPreviewProp *prop; GdkAtom property; - if (preview_class && !install_cmap && + if (preview_class && !install_cmap && preview_class->info.visual && (preview_class->info.visual->type != GDK_VISUAL_TRUE_COLOR) && (preview_class->info.visual->type != GDK_VISUAL_DIRECT_COLOR)) { @@ -489,7 +489,8 @@ gtk_preview_draw_row (GtkPreview *preview, g_return_if_fail (preview != NULL); g_return_if_fail (GTK_IS_PREVIEW (preview)); g_return_if_fail (data != NULL); - + g_return_if_fail (preview_class->info.visual != NULL); + if ((w <= 0) || (y < 0)) return; @@ -934,7 +935,7 @@ gtk_preview_dither_init (GtkPreviewClass *klass) { 63, 31, 55, 23, 61, 29, 53, 21 } }; - if (klass->info.visual->type != GDK_VISUAL_PSEUDO_COLOR) + if (!klass->info.visual || klass->info.visual->type != GDK_VISUAL_PSEUDO_COLOR) return; shades_r = klass->info.nred_shades; |