Fix unicode string conversion premature termination.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@10510 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2001-07-17 20:59:53 +00:00
parent 55727dd274
commit d8add08016
2 changed files with 23 additions and 17 deletions

View file

@ -1,3 +1,9 @@
2001-07-17 Richard Frith-Macdonald <rfm@gnu.org>
* Source/Unicode.m: Removed bogus tests for character zero in
string conversion functions ... OpenStep strings are not nul
terminated, so the code terminated conversions prematurely.
Tue Jul 17 15:00:52 2001 Nicola Pero <nicola@brainstorm.co.uk>
* Makefile.postamble (after-distclean): Depend on

View file

@ -676,14 +676,14 @@ encode_strtoustr(unichar *u1, const char *s1, int size, NSStringEncoding enc)
case NSASCIIStringEncoding:
case NSISOLatin1StringEncoding:
case NSUnicodeStringEncoding:
for (count = 0; (count < size) && (s1[count] != 0); count++)
for (count = 0; count < size; count++)
{
u1[count] = (unichar)((unc)s1[count]);
}
return count;
case NSNEXTSTEPStringEncoding:
for (count = 0; (count < size) && (s1[count] != 0); count++)
for (count = 0; count < size; count++)
{
unc c = (unc)s1[count];
@ -695,7 +695,7 @@ encode_strtoustr(unichar *u1, const char *s1, int size, NSStringEncoding enc)
return count;
case NSISOCyrillicStringEncoding:
for (count = 0; (count < size) && (s1[count] != 0); count++)
for (count = 0; count < size; count++)
{
unc c = (unc)s1[count];
@ -707,7 +707,7 @@ encode_strtoustr(unichar *u1, const char *s1, int size, NSStringEncoding enc)
return count;
case NSISOLatin2StringEncoding:
for (count = 0; (count < size) && (s1[count] != 0); count++)
for (count = 0; count < size; count++)
{
unc c = (unc)s1[count];
@ -720,7 +720,7 @@ encode_strtoustr(unichar *u1, const char *s1, int size, NSStringEncoding enc)
#if 0
case NSSymbolStringEncoding:
for (count = 0; (count < size) && (s1[count] != 0); count++)
for (count = 0; count < size; count++)
{
unc c = (unc)s1[count];
@ -740,7 +740,7 @@ encode_strtoustr(unichar *u1, const char *s1, int size, NSStringEncoding enc)
#endif
}
/*
for (count = 0; (count < size) && (s1[count] != 0); count++)
for (count = 0; count < size; count++)
{
u1[count] = encode_chartouni(s1[count], enc);
}
@ -757,7 +757,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
switch (enc)
{
case NSNonLossyASCIIStringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < 128)
@ -768,7 +768,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
return count;
case NSASCIIStringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < 128)
@ -780,7 +780,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
case NSISOLatin1StringEncoding:
case NSUnicodeStringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < 256)
@ -791,7 +791,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
return count;
case NSNEXTSTEPStringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < (unichar)Next_conv_base)
@ -802,14 +802,14 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
int i = 0;
while (((res = u - Next_uni_to_char_table[i++].from) > 0)
&& (i < Next_uni_to_char_table_size));
&& (i < Next_uni_to_char_table_size));
s2[count] = res ? '*' : Next_uni_to_char_table[--i].to;
}
}
return count;
case NSISOCyrillicStringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < (unichar)Cyrillic_conv_base)
@ -820,14 +820,14 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
int i = 0;
while (((res = u - Cyrillic_uni_to_char_table[i++].from) > 0)
&& (i < Cyrillic_uni_to_char_table_size));
&& (i < Cyrillic_uni_to_char_table_size));
s2[count] = res ? '*' : Cyrillic_uni_to_char_table[--i].to;
}
}
return count;
case NSISOLatin2StringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < (unichar)Latin2_conv_base)
@ -838,7 +838,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
int i = 0;
while (((res = u - Latin2_uni_to_char_table[i++].from) > 0)
&& (i < Latin2_uni_to_char_table_size));
&& (i < Latin2_uni_to_char_table_size));
s2[count] = res ? '*' : Latin2_uni_to_char_table[--i].to;
}
}
@ -846,7 +846,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
#if 0
case NSSymbolStringEncoding:
for (count = 0; (count < size) && (u1[count] != (unichar)0); count++)
for (count = 0; count < size; count++)
{
u = u1[count];
if (u < (unichar)Symbol_conv_base)
@ -857,7 +857,7 @@ encode_ustrtostr(char *s2, unichar *u1, int size, NSStringEncoding enc)
int i = 0;
while (((res = u - Symbol_uni_to_char_table[i++].from) > 0)
&& (i < Symbol_uni_to_char_table_size));
&& (i < Symbol_uni_to_char_table_size));
s2[count] = res ? '*' : Symbol_uni_to_char_table[--i].to;
}
}