mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-31 16:50:58 +00:00
Fies to bugs in low-level encoding/decoding changes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13138 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
bfb4315450
commit
d1f2f1254b
4 changed files with 28 additions and 18 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2002-03-18 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Source/Unicode.m: Some boundary error fixes by Alexander Malmberg.
|
||||||
|
Fixes to encoding table initialisation.
|
||||||
|
* Source/NSString.m:Fix error in encoding type for initialising from
|
||||||
|
data. By Alexander Malmberg.
|
||||||
|
* Source/GSString.m: Correct string length when transmuting an 8-bit
|
||||||
|
string to a 16-bit string - by Alexander Malmberg.
|
||||||
|
|
||||||
2002-03-17 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>
|
2002-03-17 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>
|
||||||
|
|
||||||
* Source/GSAttributedString.m
|
* Source/GSAttributedString.m
|
||||||
|
|
|
@ -1630,6 +1630,7 @@ transmute(ivars self, NSString *aString)
|
||||||
self->_contents.u = tmp;
|
self->_contents.u = tmp;
|
||||||
self->_flags.wide = 1;
|
self->_flags.wide = 1;
|
||||||
self->_count = len;
|
self->_count = len;
|
||||||
|
self->_capacity = len;
|
||||||
}
|
}
|
||||||
|
|
||||||
return other;
|
return other;
|
||||||
|
|
|
@ -1215,8 +1215,7 @@ handle_printf_atsign (FILE *stream,
|
||||||
unsigned l = 0;
|
unsigned l = 0;
|
||||||
|
|
||||||
b = (unsigned char*)[data bytes];
|
b = (unsigned char*)[data bytes];
|
||||||
if (GSToUnicode(&u, &l, b, len, NSUTF8StringEncoding, GSObjCZone(self),
|
if (GSToUnicode(&u, &l, b, len, encoding, GSObjCZone(self), 0) == NO)
|
||||||
0) == NO)
|
|
||||||
{
|
{
|
||||||
DESTROY(self);
|
DESTROY(self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,9 +99,11 @@ struct _strenc_ {
|
||||||
NSStringEncoding enc; // Constant representing the encoding.
|
NSStringEncoding enc; // Constant representing the encoding.
|
||||||
const char *ename; // ASCII string representation of name.
|
const char *ename; // ASCII string representation of name.
|
||||||
const char *iconv; /* Iconv name of encoding. If this
|
const char *iconv; /* Iconv name of encoding. If this
|
||||||
* is nul, we cannot use iconv to
|
* is the empty string, we cannot use
|
||||||
* perform conversions to/from this
|
* iconv perform conversions to/from
|
||||||
* encoding.
|
* this encoding.
|
||||||
|
* NB. do not put a nul pointer in this
|
||||||
|
* field in the table, use "" instread.
|
||||||
*/
|
*/
|
||||||
BOOL eightBit; /* Flag to say whether this encoding
|
BOOL eightBit; /* Flag to say whether this encoding
|
||||||
* can be stored in a byte array ...
|
* can be stored in a byte array ...
|
||||||
|
@ -128,11 +130,11 @@ static struct _strenc_ str_encoding_table[] = {
|
||||||
{NSJapaneseEUCStringEncoding, "NSJapaneseEUCStringEncoding","EUC-JP",0,0},
|
{NSJapaneseEUCStringEncoding, "NSJapaneseEUCStringEncoding","EUC-JP",0,0},
|
||||||
{NSUTF8StringEncoding,"NSUTF8StringEncoding","UTF-8",0,0},
|
{NSUTF8StringEncoding,"NSUTF8StringEncoding","UTF-8",0,0},
|
||||||
{NSISOLatin1StringEncoding,"NSISOLatin1StringEncoding","ISO-8859-1",1,1},
|
{NSISOLatin1StringEncoding,"NSISOLatin1StringEncoding","ISO-8859-1",1,1},
|
||||||
{NSSymbolStringEncoding,"NSSymbolStringEncoding",0,0,0},
|
{NSSymbolStringEncoding,"NSSymbolStringEncoding","",0,0},
|
||||||
{NSNonLossyASCIIStringEncoding,"NSNonLossyASCIIStringEncoding",0,1,1},
|
{NSNonLossyASCIIStringEncoding,"NSNonLossyASCIIStringEncoding","",1,1},
|
||||||
{NSShiftJISStringEncoding,"NSShiftJISStringEncoding","SHIFT-JIS",0,0},
|
{NSShiftJISStringEncoding,"NSShiftJISStringEncoding","SHIFT-JIS",0,0},
|
||||||
{NSISOLatin2StringEncoding,"NSISOLatin2StringEncoding","ISO-8859-2",1,1},
|
{NSISOLatin2StringEncoding,"NSISOLatin2StringEncoding","ISO-8859-2",1,1},
|
||||||
{NSUnicodeStringEncoding, "NSUnicodeStringEncoding",0,0,1},
|
{NSUnicodeStringEncoding, "NSUnicodeStringEncoding","",0,1},
|
||||||
{NSWindowsCP1251StringEncoding,"NSWindowsCP1251StringEncoding","CP1251",0,0},
|
{NSWindowsCP1251StringEncoding,"NSWindowsCP1251StringEncoding","CP1251",0,0},
|
||||||
{NSWindowsCP1252StringEncoding,"NSWindowsCP1252StringEncoding","CP1252",0,0},
|
{NSWindowsCP1252StringEncoding,"NSWindowsCP1252StringEncoding","CP1252",0,0},
|
||||||
{NSWindowsCP1253StringEncoding,"NSWindowsCP1253StringEncoding","CP1253",0,0},
|
{NSWindowsCP1253StringEncoding,"NSWindowsCP1253StringEncoding","CP1253",0,0},
|
||||||
|
@ -140,7 +142,7 @@ static struct _strenc_ str_encoding_table[] = {
|
||||||
{NSWindowsCP1250StringEncoding,"NSWindowsCP1250StringEncoding","CP1250",0,0},
|
{NSWindowsCP1250StringEncoding,"NSWindowsCP1250StringEncoding","CP1250",0,0},
|
||||||
{NSISO2022JPStringEncoding,"NSISO2022JPStringEncoding","ISO-2022-JP",0,0},
|
{NSISO2022JPStringEncoding,"NSISO2022JPStringEncoding","ISO-2022-JP",0,0},
|
||||||
{NSMacOSRomanStringEncoding, "NSMacOSRomanStringEncoding","MACINTOSH",0,0},
|
{NSMacOSRomanStringEncoding, "NSMacOSRomanStringEncoding","MACINTOSH",0,0},
|
||||||
{NSProprietaryStringEncoding, "NSProprietaryStringEncoding",0,0,0},
|
{NSProprietaryStringEncoding, "NSProprietaryStringEncoding","",0,0},
|
||||||
|
|
||||||
// GNUstep additions
|
// GNUstep additions
|
||||||
{NSISOCyrillicStringEncoding,"NSISOCyrillicStringEncoding","ISO-8859-5",0,1},
|
{NSISOCyrillicStringEncoding,"NSISOCyrillicStringEncoding","ISO-8859-5",0,1},
|
||||||
|
@ -155,12 +157,12 @@ static struct _strenc_ str_encoding_table[] = {
|
||||||
{NSISOLatin7StringEncoding, "NSISOLatin7StringEncoding","ISO-8859-13",0,0},
|
{NSISOLatin7StringEncoding, "NSISOLatin7StringEncoding","ISO-8859-13",0,0},
|
||||||
{NSISOLatin8StringEncoding, "NSISOLatin8StringEncoding","ISO-8859-14",0,0},
|
{NSISOLatin8StringEncoding, "NSISOLatin8StringEncoding","ISO-8859-14",0,0},
|
||||||
{NSISOLatin9StringEncoding, "NSISOLatin9StringEncoding","ISO-8859-15",0,0},
|
{NSISOLatin9StringEncoding, "NSISOLatin9StringEncoding","ISO-8859-15",0,0},
|
||||||
{NSUTF7StringEncoding, "NSUTF7StringEncoding",0,0,0},
|
{NSUTF7StringEncoding, "NSUTF7StringEncoding","",0,0},
|
||||||
{NSGB2312StringEncoding, "NSGB2312StringEncoding","EUC-CN",0,0},
|
{NSGB2312StringEncoding, "NSGB2312StringEncoding","EUC-CN",0,0},
|
||||||
{NSGSM0338StringEncoding, "NSGSM0338StringEncoding",0,0,1},
|
{NSGSM0338StringEncoding, "NSGSM0338StringEncoding","",0,1},
|
||||||
{NSBIG5StringEncoding, "NSBIG5StringEncoding","BIG5",0,0},
|
{NSBIG5StringEncoding, "NSBIG5StringEncoding","BIG5",0,0},
|
||||||
|
|
||||||
{0,"Unknown encoding",0,0,0}
|
{0,"Unknown encoding","",0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct _strenc_ **encodingTable = 0;
|
static struct _strenc_ **encodingTable = 0;
|
||||||
|
@ -348,7 +350,7 @@ BOOL
|
||||||
GSIsByteEncoding(NSStringEncoding encoding)
|
GSIsByteEncoding(NSStringEncoding encoding)
|
||||||
{
|
{
|
||||||
GetAvailableEncodings();
|
GetAvailableEncodings();
|
||||||
if (encoding == 0 || encoding >= encTableSize || encodingTable[encoding] == 0)
|
if (encoding == 0 || encoding > encTableSize || encodingTable[encoding] == 0)
|
||||||
{
|
{
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
@ -359,7 +361,7 @@ NSString*
|
||||||
GSEncodingName(NSStringEncoding encoding)
|
GSEncodingName(NSStringEncoding encoding)
|
||||||
{
|
{
|
||||||
GetAvailableEncodings();
|
GetAvailableEncodings();
|
||||||
if (encoding == 0 || encoding >= encTableSize || encodingTable[encoding] == 0)
|
if (encoding == 0 || encoding > encTableSize || encodingTable[encoding] == 0)
|
||||||
{
|
{
|
||||||
return @"Unknown encoding";
|
return @"Unknown encoding";
|
||||||
}
|
}
|
||||||
|
@ -376,7 +378,7 @@ static const char *
|
||||||
iconv_stringforencoding(NSStringEncoding encoding)
|
iconv_stringforencoding(NSStringEncoding encoding)
|
||||||
{
|
{
|
||||||
GetAvailableEncodings();
|
GetAvailableEncodings();
|
||||||
if (encoding == 0 || encoding >= encTableSize || encodingTable[encoding] == 0)
|
if (encoding == 0 || encoding > encTableSize || encodingTable[encoding] == 0)
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -1625,7 +1627,6 @@ tables:
|
||||||
if (rval == (size_t)-1 && errno != E2BIG)
|
if (rval == (size_t)-1 && errno != E2BIG)
|
||||||
{
|
{
|
||||||
result = NO;
|
result = NO;
|
||||||
iconv_close(cd);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dpos = (bsize * sizeof(unichar) - outbytesleft) / sizeof(unichar);
|
dpos = (bsize * sizeof(unichar) - outbytesleft) / sizeof(unichar);
|
||||||
|
@ -1896,7 +1897,7 @@ bases:
|
||||||
{
|
{
|
||||||
GROW();
|
GROW();
|
||||||
}
|
}
|
||||||
if (u < 128)
|
if (u < base)
|
||||||
{
|
{
|
||||||
ptr[dpos++] = (char)u;
|
ptr[dpos++] = (char)u;
|
||||||
}
|
}
|
||||||
|
@ -1920,7 +1921,7 @@ bases:
|
||||||
{
|
{
|
||||||
GROW();
|
GROW();
|
||||||
}
|
}
|
||||||
if (u < 128)
|
if (u < base)
|
||||||
{
|
{
|
||||||
ptr[dpos++] = (char)u;
|
ptr[dpos++] = (char)u;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue