[sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd)

Vlad Harchev =?iso-8859-1?q?hvv_=CE=C1_hippo=2Eru?=
Ср Мар 14 10:18:17 MSK 2001


 Hi, 

 Наверно надежда есть что это будет исправлено в 1.2.10 (который выйдет часов
через 8).

 Best regards,
  -Vlad

---------- Forwarded message ----------
Date: 13 Mar 2001 16:19:47 -0500
From: Owen Taylor <otaylor на redhat.com>
Cc: Vlad Harchev <hvv на hippo.ru>, Ivan Pascal <pascal на info.tsu.ru>
To: gtk-devel-list на gnome.org
Subject: Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9
User-Agent: Gnus/5.0807 (Gnus v5.8.7) Emacs/20.7


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





Подробная информация о списке рассылки Sisyphus