From c4ccb03451e07f0489208f8e7403cd597e8dbf31 Mon Sep 17 00:00:00 2001 From: Per Hedbor <ph@opera.com> Date: Wed, 15 Mar 2000 08:52:24 +0100 Subject: [PATCH] Do not try to call gtk_object_get_data on non-gtk objects, it's not all that good an idea. :-) Rev: src/post_modules/GTK/source/support.c:1.13 --- src/post_modules/GTK/source/support.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/post_modules/GTK/source/support.c b/src/post_modules/GTK/source/support.c index d5cabb6ecb..216798b3a4 100644 --- a/src/post_modules/GTK/source/support.c +++ b/src/post_modules/GTK/source/support.c @@ -307,6 +307,16 @@ GdkImage *gdkimage_from_pikeimage( struct object *img, int fast, GdkImage *i ) return i; } +#define IS_OBJECT_PROGRAM(X) \ +!( ((X) == pgtk_style_program) \ +|| ((X) == pgtk_CTreeNode_program) \ +|| ((X) == pgtk_CTreeRow_program) \ +|| ((X) == pgtk_icon_list_item_program) \ +|| ((X) == pgtk_plot_dataset_program) \ +|| ((X) == pgtk_psfont_program) \ +|| ((X) == pgtk_selection_data_program) \ +|| ((X) == pgtk_sheet_child_program)) + void push_gtkobjectclass(void *obj, struct program *def) { struct object *o; @@ -315,11 +325,12 @@ void push_gtkobjectclass(void *obj, struct program *def) push_int(0); return; } - if( (o=gtk_object_get_data(GTK_OBJECT(obj), "pike_object")) ) - { - ref_push_object( o ); - return; - } + if( IS_OBJECT_PROGRAM(def) ) + if( (o=gtk_object_get_data(((void *)obj), "pike_object")) ) + { + ref_push_object( o ); + return; + } o = low_clone( def ); call_c_initializers( o ); ((struct object_wrapper *)o->storage)->obj = obj; -- GitLab