From 3ddbbe0c7c089f672972253cf5ba85d7e577d2af Mon Sep 17 00:00:00 2001 From: CaS Date: Wed, 20 Nov 2002 13:50:55 +0000 Subject: [PATCH] redhat 8 bug workaround git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@15031 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/Additions/Unicode.m | 24 +++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b13a6f61..1031edf9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-11-20 Richard Frith-Macdonald + + * Source/Additions/Unicode.m: Work around bug in the redhat 8 iconv + library ... was sucessfully opening the encoding "" when it shouldn't. + 2002-11-19 Adam Fedor * Version: 1.5.1 diff --git a/Source/Additions/Unicode.m b/Source/Additions/Unicode.m index 52409d4a5..6192c92f1 100644 --- a/Source/Additions/Unicode.m +++ b/Source/Additions/Unicode.m @@ -592,7 +592,7 @@ iconv_stringforencoding(NSStringEncoding encoding) { if (GSEncodingSupported(encoding) == NO) { - return ""; + return 0; } return encodingTable[encoding]->iconv; } @@ -1065,12 +1065,19 @@ tables: size_t outbytesleft; size_t rval; iconv_t cd; + const char *estr = iconv_stringforencoding(enc); - cd = iconv_open(UNICODE_ENC, iconv_stringforencoding(enc)); + if (estr == 0) + { + NSLog(@"No iconv for encoding x%02x", enc); + result = NO; + break; + } + cd = iconv_open(UNICODE_ENC, estr); if (cd == (iconv_t)-1) { NSLog(@"No iconv for encoding %@ tried to use %s", - GetEncodingName(enc), iconv_stringforencoding(enc)); + GetEncodingName(enc), estr); result = NO; break; } @@ -1567,12 +1574,19 @@ tables: size_t inbytesleft; size_t outbytesleft; size_t rval; + const char *estr = iconv_stringforencoding(enc); - cd = iconv_open(iconv_stringforencoding(enc), UNICODE_ENC); + if (estr == 0) + { + NSLog(@"No iconv for encoding x%02x", enc); + result = NO; + break; + } + cd = iconv_open(estr, UNICODE_ENC); if (cd == (iconv_t)-1) { NSLog(@"No iconv for encoding %@ tried to use %s", - GetEncodingName(enc), iconv_stringforencoding(enc)); + GetEncodingName(enc), estr); result = NO; break; }