summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--ChangeLog.pre-2-015
-rw-r--r--ChangeLog.pre-2-1015
-rw-r--r--ChangeLog.pre-2-215
-rw-r--r--ChangeLog.pre-2-415
-rw-r--r--ChangeLog.pre-2-615
-rw-r--r--ChangeLog.pre-2-815
-rw-r--r--gdk/gdk.c4
-rw-r--r--gdk/x11/gdkmain-x11.c4
-rw-r--r--gtk/gtkcontainer.h6
-rw-r--r--gtk/gtkobject.c69
-rw-r--r--gtk/gtkobject.h6
-rw-r--r--gtk/gtkpreview.c7
13 files changed, 180 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog
index 92ba1f3ddd..2c1c9ee7c7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/gdk/gdk.c b/gdk/gdk.c
index fe94fbe49e..b778d3d795 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.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/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;