Could this be related to this bug that I found in GTk+ in November. 

 Tue Nov 16 10:15:54 1999 Owen Taylor <[EMAIL PROTECTED]>

 * gtk/gtkitemfactory.c (gtk_item_factory_parse_path):
 If translation does not include a '/', use entire
 translation instead of crashing.

(That was after GTK+ 1.2.6 was released.)


    From: Owen Taylor <[EMAIL PROTECTED]>
    To: Tor Lillqvist <[EMAIL PROTECTED]>
    Cc: [EMAIL PROTECTED]
    Subject: Re: gtk_item_factory_parse_path() problem with incorrect translations
    Date: 16 Nov 1999 10:30:51 -0500


    Tor Lillqvist <[EMAIL PROTECTED]> writes:

    > Hi,
    > 
    > There is a problem with gtk_item_factory_parse_path() if it encounters
    > a bogus translation string (typically one of those fuzzy translations
    > I assume the gettext tools generate as more or less pathetic
    > guesstimates by themselves?). If the translation doesn't contain any

    Hmmm, but fuzzy matches are disabled by default until someone hand-edits
    them in...

    > slash, the code at the end of gtk_item_factory_parse_path() obviously
    > will crash.  This can be demonstrated by running the GIMP with
    > LANG=ru, for instance.
    > 
    > It might be argued that translations are supposed to be correct, and
    > that crashing is thus OK? Anyway, suggested fix below.

    Hmmm, sort of embarassing. I've been saying for a long time that
    the translations do _not_ need to contain the full path, since
    everything but the last component is simply ignored.

    So, the change that makes it do what I thought it was doing is:

    Index: gtkitemfactory.c
    ===================================================================
    RCS file: /cvs/gnome/gtk+/gtk/gtkitemfactory.c,v
    retrieving revision 1.21.2.5
    retrieving revision 1.21.2.6
    diff -u -r1.21.2.5 -r1.21.2.6
    --- gtkitemfactory.c        1999/10/07 21:29:41     1.21.2.5
    +++ gtkitemfactory.c        1999/11/16 15:25:48     1.21.2.6
    @@ -968,7 +968,10 @@
         translation = str;

       p = strrchr (translation, '/');
    -  p++;
    +  if (p)
    +    p++;
    +  else
    +    p = translation;

       *item = g_strdup (p);

    Thanks for pointing this out,
                                            Owen


Reply via email to