Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9



Vlad Harchev <hvv hippo ru> writes:

>  Hi,
> 
>  Users say that there are problems with russian strings in window titles under
> XFree-4.0.2 and gtk-1.2.9 (I don't have XF-4.0.2 so I can't describe them) - I
> was told that it's somehow severely corrupted. I guess same problems will
> appear for any other non-latin1 locale.
>  The problem is in newly-introduced sanitize_ctext function. 
> 
>  Here is a hackish patch that fixes the problem for russian (it's not mine),
> but it has (as Aleksey Novodvorsky <aen logic ru>, the author of the patch, 
> says) a problem of not filtering out some escape sequences that are
> introduced by some very old XFree servers:
> 
> diff -ur gtk+-1.2.9.orig/gdk/gdkselection.c gtk+-1.2.9/gdk/gdkselection.c
> --- gtk+-1.2.9.orig/gdk/gdkselection.c  Tue Feb 20 19:44:22 2001
> +++ gtk+-1.2.9/gdk/gdkselection.c       Sun Mar  4 15:26:05 2001
> @@ -222,7 +222,9 @@
>        else if (c == '\n' || c == '\t' || c == 27 /* ESC */ ||
>                (c >= 32 && c <= 127) || /* GL */
>                c == 155 /* CONTROL SEQUENCE INTRODUCER */ ||
> -              (c >= 160 && c <= 255)) /* GR */
> +              (c >= 160 && c <= 255) /* GR */ ||
> +              (c >= 128 && c <= 150) /* charset length  */ ||
> +              c == 2 /* end of non-standard encoding sequence */)
>         {
>           result[out_length++] = c;
>         }

OK, looking again at the Xlib code and the CTEXT spec, it appears that
the CTEXT spec was at some point extended to accomodate this (section
6) but the initial section that describes what characters are allowed
was never updated :-(.

Unfortunately, according to the spec, anything is allowed in an
extended segment, including all of C0 and C1, so probably we need to
add explicit recognition of extended segments to sanitize_ctext().

Or, since since sanitize_ctext is only a workaround for buggy Xlib
(like XFree86 3.x, etc), I suppose the patch to add it could just be
backed out.

>  I have been told that complete description of escape sequences supported by
> XFree is only available in russian though. Ivan Pascal <pascal info tsu ru> is
> the author of that documentation, and I hope that he will help to explain how
> to rewrite sanize_ctext in order to be correct. 

I almost think that I need to learn Russian because Ivan has produced
all this great documentation about Xkb and CText and so forth that I
can't read! ;-)

But actually, the code in Xlib appears to correspond pretty well with
the CTEXT spec in the X distribution, and Bruno Haible has even
updated the CTEXT spec a bit recently to make the correspondence
closer.

>  It would be nice if this issue was fixed before 1.2.10 release..

I'll make sure that happens.

Regards,
                                        Owen




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