mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 13:30:06 +00:00
Update.
* string/strcoll.c: Fix two memory allocation problems. * string/Makefile (tests): Add bug-strcoll1. * string/bug-strcoll1.c: New file.
This commit is contained in:
parent
9243173ab9
commit
c51dc068d5
@ -1,5 +1,9 @@
|
|||||||
2001-04-26 Ulrich Drepper <drepper@redhat.com>
|
2001-04-26 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* string/strcoll.c: Fix two memory allocation problems.
|
||||||
|
* string/Makefile (tests): Add bug-strcoll1.
|
||||||
|
* string/bug-strcoll1.c: New file.
|
||||||
|
|
||||||
* malloc/mcheck.c (mcheck): Call malloc once before setting the
|
* malloc/mcheck.c (mcheck): Call malloc once before setting the
|
||||||
hooks to allow the internal check hooks to be set up if necessary.
|
hooks to allow the internal check hooks to be set up if necessary.
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ o-objects.ob := memcpy.o memset.o memchr.o
|
|||||||
tests := tester inl-tester noinl-tester testcopy test-ffs \
|
tests := tester inl-tester noinl-tester testcopy test-ffs \
|
||||||
tst-strlen stratcliff tst-svc tst-inlcall \
|
tst-strlen stratcliff tst-svc tst-inlcall \
|
||||||
bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \
|
bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \
|
||||||
tst-strtok tst-strxfrm
|
tst-strtok tst-strxfrm bug-strcoll1
|
||||||
distribute := memcopy.h pagecopy.h tst-svc.expect
|
distribute := memcopy.h pagecopy.h tst-svc.expect
|
||||||
|
|
||||||
|
|
||||||
@ -58,6 +58,7 @@ tester-ENV = LANGUAGE=C
|
|||||||
inl-tester-ENV = LANGUAGE=C
|
inl-tester-ENV = LANGUAGE=C
|
||||||
noinl-tester-ENV = LANGUAGE=C
|
noinl-tester-ENV = LANGUAGE=C
|
||||||
tst-strxfrm-ENV = LOCPATH=$(common-objpfx)localedata
|
tst-strxfrm-ENV = LOCPATH=$(common-objpfx)localedata
|
||||||
|
bug-strcoll1-ENV = LOCPATH=$(common-objpfx)localedata
|
||||||
CFLAGS-noinl-tester.c = -fno-builtin
|
CFLAGS-noinl-tester.c = -fno-builtin
|
||||||
CFLAGS-tst-strlen.c = -fno-builtin
|
CFLAGS-tst-strlen.c = -fno-builtin
|
||||||
CFLAGS-stratcliff.c = -fno-builtin
|
CFLAGS-stratcliff.c = -fno-builtin
|
||||||
|
24
string/bug-strcoll1.c
Normal file
24
string/bug-strcoll1.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <locale.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
const char t1[] = "0-0-0-0-0-0-0-0-0-0.COM";
|
||||||
|
const char t2[] = "00000-00000.COM";
|
||||||
|
int res1;
|
||||||
|
int res2;
|
||||||
|
|
||||||
|
setlocale (LC_ALL, "en_US.ISO-8859-1");
|
||||||
|
|
||||||
|
res1 = strcoll (t1, t2);
|
||||||
|
printf ("strcoll (\"%s\", \"%s\") = %d\n", t1, t2, res1);
|
||||||
|
res2 = strcoll (t2, t1);
|
||||||
|
printf ("strcoll (\"%s\", \"%s\") = %d\n", t2, t1, res2);
|
||||||
|
|
||||||
|
return ((res1 == 0 && res2 != 0)
|
||||||
|
|| (res1 != 0 && res2 == 0)
|
||||||
|
|| (res1 < 0 && res2 < 0)
|
||||||
|
|| (res1 > 0 && res2 > 0));
|
||||||
|
}
|
@ -154,7 +154,7 @@ STRCOLL (s1, s2, l)
|
|||||||
if (s1len + s2len >= 16384)
|
if (s1len + s2len >= 16384)
|
||||||
{
|
{
|
||||||
idx1arr = (int32_t *) malloc ((s1len + s2len) * (sizeof (int32_t) + 1));
|
idx1arr = (int32_t *) malloc ((s1len + s2len) * (sizeof (int32_t) + 1));
|
||||||
idx2arr = &idx1arr[s2len];
|
idx2arr = &idx1arr[s1len];
|
||||||
rule1arr = (unsigned char *) &idx2arr[s2len];
|
rule1arr = (unsigned char *) &idx2arr[s2len];
|
||||||
rule2arr = &rule1arr[s1len];
|
rule2arr = &rule1arr[s1len];
|
||||||
|
|
||||||
@ -173,7 +173,7 @@ STRCOLL (s1, s2, l)
|
|||||||
try_stack:
|
try_stack:
|
||||||
idx1arr = (int32_t *) alloca (s1len * sizeof (int32_t));
|
idx1arr = (int32_t *) alloca (s1len * sizeof (int32_t));
|
||||||
idx2arr = (int32_t *) alloca (s2len * sizeof (int32_t));
|
idx2arr = (int32_t *) alloca (s2len * sizeof (int32_t));
|
||||||
rule1arr = (unsigned char *) alloca (s2len);
|
rule1arr = (unsigned char *) alloca (s1len);
|
||||||
rule2arr = (unsigned char *) alloca (s2len);
|
rule2arr = (unsigned char *) alloca (s2len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -422,7 +422,7 @@ STRCOLL (s1, s2, l)
|
|||||||
{
|
{
|
||||||
/* No sequence at all or just one. */
|
/* No sequence at all or just one. */
|
||||||
if (idx1cnt == idx1max)
|
if (idx1cnt == idx1max)
|
||||||
/* Note that seq2len is still zero. */
|
/* Note that seq1len is still zero. */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
backw1_stop = ~0ul;
|
backw1_stop = ~0ul;
|
||||||
|
Loading…
Reference in New Issue
Block a user