ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd)
@ 2001-03-16  9:36 Vlad Harchev
  2001-03-16 18:56 ` Aleksey Novodvorsky
  0 siblings, 1 reply; 4+ messages in thread
From: Vlad Harchev @ 2001-03-16  9:36 UTC (permalink / raw)
  To: sisyphus

 Добрый день!

 Алексей, как Вы оцениваете этот патч? Стоит ли Овену его коммитить или могут
быть какие-нить проблемы?

 Best regards,
  -Vlad

---------- Forwarded message ----------
Date: 15 Mar 2001 14:13:06 -0500
From: Owen Taylor <otaylor@redhat.com>
Cc: hvv@hippo.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:

> On 13 Mar 2001, Owen Taylor wrote:

> > 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().

[...]

>  Thanks you for this.
> 
>  I want to add that I just tried gtk+-1.2.9 and found that I can't cut and
> paste russian to/from any gtk widget due to brokeness of sanitize_ctext! That
> hackish patch fixes the problem. So the problem should be definitely fixed!

Patch appended fixes cut-and-paste of Russian for me.
 
>  Also small addition: by the "old XFree servers" ANY XFree with version <=
> 4.0.1 was ment in my mail.

I dont' understand what you meant by this. Are there problems that occcur
with old XFree86 libraries (server is irrelevant) that don't occur with
current XFree86 libraries?

                                        Owen

Index: gdkselection.c
===================================================================
RCS file: /cvs/gnome/gtk+/gdk/Attic/gdkselection.c,v
retrieving revision 1.6.2.6
diff -u -r1.6.2.6 gdkselection.c
--- gdkselection.c	2001/02/22 20:38:12	1.6.2.6
+++ gdkselection.c	2001/03/15 19:09:51
@@ -208,16 +208,40 @@
   gchar *result = g_malloc (*length + 1);
   gint out_length = 0;
   gint i;
+  const guchar *ustr = (const guchar *)str;
 
   for (i=0; i < *length; i++)
     {
-      guchar c = ((guchar *)str)[i];
+      guchar c = ustr[i];
       
       if (c == '\r')
 	{
 	  result[out_length++] = '\n';
-	  if (i + 1 < *length && str[i + 1] == '\n')
+	  if (i + 1 < *length && ustr[i + 1] == '\n')
 	    i++;
+	}
+      else if (c == 27 /* ESC */)
+	{
+	  /* Check for "extended segments, which can contain arbitrary
+	   * octets. See CTEXT spec, section 6.
+	   */
+
+	  if (i + 5 < *length &&
+	      ustr[i + 1] == '%' &&
+	      ustr[i + 2] == '/' &&
+	      (ustr[i + 3] >= 48 && ustr[i + 3] <= 52) &&
+	      ustr[i + 4] >= 128 &&
+	      ustr[i + 5] >= 128)
+	    {
+	      int extra_len = 6 + (ustr[i + 4] - 128) * 128 + ustr[i + 5] - 128;
+	      extra_len = MAX (extra_len, *length - i);
+
+	      memcpy (result + out_length, ustr + i, extra_len);
+	      out_length += extra_len;
+	      i += extra_len - 1;
+	    }
+	  else
+	    result[out_length++] = c;	    
 	}
       else if (c == '\n' || c == '\t' || c == 27 /* ESC */ ||
 	       (c >= 32 && c <= 127) ||	/* GL */




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd)
  2001-03-16 18:56 ` Aleksey Novodvorsky
@ 2001-03-16 11:10   ` Vlad Harchev
  2001-03-16 20:17     ` Aleksey Novodvorsky
  0 siblings, 1 reply; 4+ messages in thread
From: Vlad Harchev @ 2001-03-16 11:10 UTC (permalink / raw)
  To: sisyphus

On Fri, 16 Mar 2001, Aleksey Novodvorsky wrote:

> On Fri, 16 Mar 2001 13:36:05 +0400 (SAMT)
> Vlad Harchev <hvv@hippo.ru> wrote:
> 
> > 
> >  Добрый день!
> > 
> >  Алексей, как Вы оцениваете этот патч? Стоит ли Овену его
> > коммитить или могут
> > быть какие-нить проблемы?
> > 
> 
> >  
> > >  Also small addition: by the "old XFree servers" ANY
> > XFree with version <=
> > > 4.0.1 was ment in my mail.
> > 
> > I dont' understand what you meant by this. Are there
> > problems that occcur
> > with old XFree86 libraries (server is irrelevant) that
> > don't occur with
> > current XFree86 libraries?
> 
> В версиях XFree86 <= 4.0.2 esc-последоватьельнсти для
> нестандратных кодировок содержались явно и были _неверными_.
> Именно потому я не включил в свой патч алгоритм вычисления
> пресловутого \200+<charset name length>+3 , а указал
> диапазон, что нехорошо, но действительно исправляет
> ситуацию. 
> Прилагаемый же патч полностью корректен, но не исправит
> положения для старых XFree в силу вышесказанного.

 Так, а на старых XFree проблемы будут проявляться и для тоже русского (или
каких-либо экзотических кодировок русского) или только для каких-либо CJK в
редких случаях?
 Я просто сейчас тестировал этот патч на XLib от XFree-3.3.6 и никаких проблем
не увидел (достаточно подробно тестировал cut&paste - а из заголовков окон с
русским было только одно - с ним все ОК). Все тестировал при многочисленных
комбинациях вариантов..
 Если Вы не против, я сошлюсь на Вас в письме Овену и скажу, что за
дополнительной информацией обращаться к Вам.
 
> Rgrds, AEN

 Best regards,
  -Vlad




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd)
  2001-03-16  9:36 [sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd) Vlad Harchev
@ 2001-03-16 18:56 ` Aleksey Novodvorsky
  2001-03-16 11:10   ` Vlad Harchev
  0 siblings, 1 reply; 4+ messages in thread
From: Aleksey Novodvorsky @ 2001-03-16 18:56 UTC (permalink / raw)
  To: sisyphus

On Fri, 16 Mar 2001 13:36:05 +0400 (SAMT)
Vlad Harchev <hvv@hippo.ru> wrote:

> 
>  Добрый день!
> 
>  Алексей, как Вы оцениваете этот патч? Стоит ли Овену его
> коммитить или могут
> быть какие-нить проблемы?
> 

>  
> >  Also small addition: by the "old XFree servers" ANY
> XFree with version <=
> > 4.0.1 was ment in my mail.
> 
> I dont' understand what you meant by this. Are there
> problems that occcur
> with old XFree86 libraries (server is irrelevant) that
> don't occur with
> current XFree86 libraries?

В версиях XFree86 <= 4.0.2 esc-последоватьельнсти для
нестандратных кодировок содержались явно и были _неверными_.
Именно потому я не включил в свой патч алгоритм вычисления
пресловутого \200+<charset name length>+3 , а указал
диапазон, что нехорошо, но действительно исправляет
ситуацию. 
Прилагаемый же патч полностью корректен, но не исправит
положения для старых XFree в силу вышесказанного.
Rgrds, AEN





^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd)
  2001-03-16 11:10   ` Vlad Harchev
@ 2001-03-16 20:17     ` Aleksey Novodvorsky
  0 siblings, 0 replies; 4+ messages in thread
From: Aleksey Novodvorsky @ 2001-03-16 20:17 UTC (permalink / raw)
  To: sisyphus

On Fri, 16 Mar 2001 15:10:05 +0400 (SAMT)
Vlad Harchev <hvv@hippo.ru> wrote:

> On Fri, 16 Mar 2001, Aleksey Novodvorsky wrote:
> 

>  Так, а на старых XFree проблемы будут проявляться и для
> тоже русского (или
> каких-либо экзотических кодировок русского) или только для
> каких-либо CJK в
> редких случаях?
>  Я просто сейчас тестировал этот патч на XLib от
> XFree-3.3.6 и никаких проблем
> не увидел (достаточно подробно тестировал cut&paste - а из
> заголовков окон с
> русским было только одно - с ним все ОК). Все тестировал
> при многочисленных
> комбинациях вариантов..
>  Если Вы не против, я сошлюсь на Вас в письме Овену и
> скажу, что за
> дополнительной информацией обращаться к Вам.

Нет, сейчас я не могу вступать в такую переписку.
У меня сейчас нет под рукой 3.3.6, но там были неправильные
описания esc-sequence.
Впрочем, я не вижу смысла в поддержке старых ошибок, -- если
они есть, то исправляются ситуационными патчами.

Rgrds, AEN

>  
> > Rgrds, AEN
> 
>  Best regards,
>   -Vlad
> 
> 
> _______________________________________________
> Sisyphus mailing list
> Sisyphus@linuxteam.iplabs.ru
> http://altlinux.ru/mailman/listinfo/sisyphus



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-03-16 20:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-03-16  9:36 [sisyphus] Re: gdk_selection.c:sanitize_ctext is broken in 1.2.9 (fwd) Vlad Harchev
2001-03-16 18:56 ` Aleksey Novodvorsky
2001-03-16 11:10   ` Vlad Harchev
2001-03-16 20:17     ` Aleksey Novodvorsky

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git