[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 12:58:12 MSK 2001
On Wed, 14 Mar 2001, Vlad Harchev wrote:
И кстати если эта проблема не будет исправлена, нельзя будет
вырезать/вставлять русский в ЛЮБОЙ ВИДЖЕТ не-патченного gtk-1.2.{9,10}. Просто
повезло что Алексей обмолвился об этой проблеме в gtk-1.2.9 в этом списке и
что я развил эту тему.
Мораль - господа разработчики, своевременно сообщайте авторам об ошибках
хотя бы в критических компонентах.
> 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 mailing list
> Sisyphus на linuxteam.iplabs.ru
> http://altlinux.ru/mailman/listinfo/sisyphus
>
Best regards,
-Vlad
Подробная информация о списке рассылки Sisyphus