On Wed, 2 Nov 2005, Luis Menina wrote:

> Can you give me more info about what is wrong with my function ?
> I don't understand what you mean by "it doesn't pass over the tail of
> the last characters"

Your code fails if the last character to skipped is a multibyte
one.  Suppose this is the input:

  str = "\xC2\xA0"
  offset = 1

which is the U+00A0 NO-BREAK SPACE.  The output should be str +
2, but your code returns str + 1.

behdad


> >>gchar * g_utf8_offset_to_pointer1 ( const gchar *str,
> >>                                    glong offset)
> >>{
> >>    while (offset)
> >>    {
> >>            if ((*++str & 0xC0) != 0x80)
> >>                    --offset ;
> >>    }
> >>
> >>    return (gchar *)str;
> >>}

--behdad
http://behdad.org/

"Commandment Three says Do Not Kill, Amendment Two says Blood Will Spill"
        -- Dan Bern, "New American Language"
_______________________________________________
Performance-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/performance-list

Reply via email to