Re: XIM application crashes on gtk+1.3.*



tajima <hidetoshi tajima eng sun com> writes:

> I'm seeing yet another problem described below when I input Japanese text
> via XIM input module on another sample program, examples/entry/entry.c
> distrubuted with gtk+.
> 
> Note that I modified the C program to call gtk_set_locale() just before
> gtk_init(), and compiled it with gtk-config-2.0 as follows:
> 
>   gcc `gtk-config-2.0 --cflags`  entry.c -o entry `gtk-config-2.0 --libs`
> 
> This happens on both 1.3.2 tarball and the latest out of cvs.

Ah, the handling of reverse video is triggering a bug in copying
GC's.

Patch attached (just applied to CVS) should fix.
 
[..]

> (gdb) where 10
> #0  0xff0ad5c0 in gdk_region_copy () from /opt/gnome2/lib//libgdk-x11-1.3.so.2
> #1  0xff0c54c4 in gdk_gc_copy () from /opt/gnome2/lib//libgdk-x11-1.3.so.2
> #2  0xff0a3cac in gdk_pango_get_gc () from /opt/gnome2/lib//libgdk-x11-1.3.so.2
> #3  0xff0a3ffc in gdk_draw_layout_line ()
>    from /opt/gnome2/lib//libgdk-x11-1.3.so.2

Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gtk+/ChangeLog,v
retrieving revision 1.1573
diff -u -r1.1573 ChangeLog
--- ChangeLog	2000/11/30 23:39:46	1.1573
+++ ChangeLog	2000/12/01 04:05:14
@@ -1,3 +1,8 @@
+Thu Nov 30 23:03:04 2000  Owen Taylor  <otaylor redhat com>
+
+	* gdk/x11/gdkgc-x11.c (gdk_gc_copy): Properly handle
+	gc->clip_region == NULL>
+
 2000-11-30  Tor Lillqvist  <tml iki fi>
 
 	Changes by Hans Breuer:
Index: gdk/x11/gdkgc-x11.c
===================================================================
RCS file: /cvs/gnome/gtk+/gdk/x11/gdkgc-x11.c,v
retrieving revision 1.13
diff -u -r1.13 gdkgc-x11.c
--- gdk/x11/gdkgc-x11.c	2000/11/02 17:18:52	1.13
+++ gdk/x11/gdkgc-x11.c	2000/12/01 04:05:14
@@ -711,7 +711,10 @@
   if (x11_dst_gc->clip_region)
     gdk_region_destroy (x11_dst_gc->clip_region);
 
-  x11_dst_gc->clip_region = gdk_region_copy (x11_src_gc->clip_region);
+  if (x11_src_gc->clip_region)
+    x11_dst_gc->clip_region = gdk_region_copy (x11_src_gc->clip_region);
+  else
+    x11_dst_gc->clip_region = NULL;
 
   x11_dst_gc->dirty_mask = x11_src_gc->dirty_mask;
 }




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