Re: [Patch] Use XAP_App::getDefaultEncoding in xap_Strings.cpp [Was Commit: fix caller of wctomb instead]

From: Dom Lachowicz (domlachowicz@yahoo.com)
Date: Sun Mar 02 2003 - 13:27:23 EST

  • Next message: Mark Gilbert: "Re: [Patch] Use XAP_App::getDefaultEncoding in xap_Strings.cpp [Was Commit: fix caller of wctomb instead]"

    Thanks, I've applied this patch minus the #if 0 part.
    That's what CVS versioning is for. It still works for
    de_DE and en_US.

    Any patch that removes usage of the Encoding Manager
    is a good patch.

    Dom

    --- Anthony Fok <anthony@thizlinux.com> wrote:
    > Dear all,
    >
    > As mentioned in my previous post, AbiWord 1.1.x
    > (GTK2 on GNU/Linux)
    > would fail to display the text in some dialog boxes
    > when started under
    > a non-UTF8 locale (say zh_TW.Big5, zh_CN.GB2312).
    > All is normal in
    > zh_TW.UTF-8 locale.
    >
    > I was perplexed as to why some Chinese strings
    > display properly, and some
    > don't, with the error:
    >
    > WARNING **: Invalid UTF8 string passed to
    > pango_layout_set_text()
    >
    > After some investigation, it turns out to be a
    > difference in the call to
    > wctomb_conv() between XAP_DiskStringSet::setValue()
    > and
    > AP_DiskStringSet::setValue().
    >
    > Tomas Frydrych's commit to xap_Strings.cpp in
    > January 2002 (to fix Bug 2570):
    >
    >
    >
    http://www.abisource.com/bonsai/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=abi/src/af/xap/xp&command=DIFF_FRAMESET&file=xap_Strings.cpp&rev2=1.23&rev1=1.22
    >
    > Christian Biesel's commit to ap_Strings.cpp in
    > October 2002
    >
    >
    >
    http://www.abisource.com/bonsai/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=abi/src/wp/ap/xp&command=DIFF_FRAMESET&file=ap_Strings.cpp&rev2=1.14&rev1=1.13
    >
    > So, XAP_DiskStringSet::setValue() was storing the
    > strings in the current
    > system encoding, e.g. when LANG=zh_TW.Big5, it
    > stores the strings in Big5
    > encoding; whereas AP_DiskStringSet::setValue() does
    > the right thing by
    > storing the text in UTF-8 encoding. (Or something
    > like that; I don't fully
    > understand the details.)
    >
    > So, I changed xap_Strings.cpp to use the line in
    > ap_Strings.cpp, and
    > voila, it works! :-) Patch is attached. I hope the
    > change won't break
    > things on other platforms.
    >
    > Cheers,
    >
    > Anthony
    >
    > --
    > Anthony Fok Tung-Ling
    > ThizLinux Laboratory <anthony@thizlinux.com>
    > http://www.thizlinux.com/
    > Debian Chinese Project <foka@debian.org>
    > http://www.debian.org/intl/zh/
    > Come visit Our Lady of Victory Camp!
    > http://www.olvc.ab.ca/
    > > ---
    >
    abiword-1.1.3+cvs.2003.03.02.orig/abi/src/af/xap/xp/xap_Strings.cpp
    > +++
    >
    abiword-1.1.3+cvs.2003.03.02/abi/src/af/xap/xp/xap_Strings.cpp
    > @@ -250,11 +250,15 @@
    > }
    > }
    >
    > +#if 0
    > const char * encoding =
    >
    (XAP_EncodingManager::get_instance()->getNativeSystemEncodingName())
    > ?
    >
    >
    XAP_EncodingManager::get_instance()->getNativeSystemEncodingName()
    > :
    >
    >
    XAP_EncodingManager::get_instance()->getNativeEncodingName();
    >
    > UT_Wctomb wctomb_conv(encoding);
    > +#else
    > + UT_Wctomb
    >
    wctomb_conv(XAP_App::getApp()->getDefaultEncoding());
    > +#endif
    > char letter_buf[20];
    > int length;
    > for (int k=0; k<kLimit; k++)
    >

    __________________________________________________
    Do you Yahoo!?
    Yahoo! Tax Center - forms, calculators, tips, more
    http://taxes.yahoo.com/



    This archive was generated by hypermail 2.1.4 : Sun Mar 02 2003 - 13:33:23 EST