mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 16:21:06 +00:00
Update.
* posix/regex.c: Fix alignment problem. Patch by Isamu Hasegawa <isamu@yamato.ibm.com>. Contributed by Rick Gorton <rick.gorton@alpha-processor.com>.
This commit is contained in:
parent
6b58cbc02d
commit
441f7d1eb2
@ -1,10 +1,13 @@
|
|||||||
2001-02-08 Ulrich Drepper <drepper@redhat.com>
|
2001-02-08 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* posix/regex.c: Fix alignment problem.
|
||||||
|
Patch by Isamu Hasegawa <isamu@yamato.ibm.com>.
|
||||||
|
|
||||||
* sysdeps/alpha/strrchr.S: Little optimization.
|
* sysdeps/alpha/strrchr.S: Little optimization.
|
||||||
Patch by Richard Henderson <rth@redhat.com>.
|
Patch by Richard Henderson <rth@redhat.com>.
|
||||||
|
|
||||||
* sysdeps/alpha/alphaev67/strrchr.S: New file.
|
* sysdeps/alpha/alphaev67/strrchr.S: New file.
|
||||||
Contributed by Rick Gorton <rick.gorton@alpha-processor.com>..
|
Contributed by Rick Gorton <rick.gorton@alpha-processor.com>.
|
||||||
|
|
||||||
2001-02-08 kaz Kojima <kkojima@rr.iij4u.or.jp>
|
2001-02-08 kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2001-02-08 kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/sh/pt-initfini.c: New file.
|
||||||
|
|
||||||
2001-02-06 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
2001-02-06 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/s390/pt-initfini.c: New file.
|
* sysdeps/unix/sysv/linux/s390/pt-initfini.c: New file.
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
# define US_CHAR_TYPE wchar_t/* unsigned character type */
|
# define US_CHAR_TYPE wchar_t/* unsigned character type */
|
||||||
# define COMPILED_BUFFER_VAR wc_buffer
|
# define COMPILED_BUFFER_VAR wc_buffer
|
||||||
# define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */
|
# define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */
|
||||||
# define CHAR_CLASS_SIZE (sizeof(wctype_t)/sizeof(CHAR_TYPE)+1)
|
# define CHAR_CLASS_SIZE ((__alignof__(wctype_t)+sizeof(wctype_t))/sizeof(CHAR_TYPE)+1)
|
||||||
# define PUT_CHAR(c) \
|
# define PUT_CHAR(c) \
|
||||||
do { \
|
do { \
|
||||||
if (MC_CUR_MAX == 1) \
|
if (MC_CUR_MAX == 1) \
|
||||||
@ -2807,6 +2807,8 @@ regex_compile (pattern, size, syntax, bufp)
|
|||||||
if (c == ':' && *p == ']')
|
if (c == ':' && *p == ']')
|
||||||
{
|
{
|
||||||
wctype_t wt;
|
wctype_t wt;
|
||||||
|
uintptr_t alignedp;
|
||||||
|
|
||||||
/* Query the character class as wctype_t. */
|
/* Query the character class as wctype_t. */
|
||||||
wt = IS_CHAR_CLASS (str);
|
wt = IS_CHAR_CLASS (str);
|
||||||
if (wt == 0)
|
if (wt == 0)
|
||||||
@ -2824,9 +2826,14 @@ regex_compile (pattern, size, syntax, bufp)
|
|||||||
b += CHAR_CLASS_SIZE;
|
b += CHAR_CLASS_SIZE;
|
||||||
/* Move data which follow character classes
|
/* Move data which follow character classes
|
||||||
not to violate the data. */
|
not to violate the data. */
|
||||||
insert_space(CHAR_CLASS_SIZE, laststart + 6, b - 1);
|
insert_space(CHAR_CLASS_SIZE,
|
||||||
|
laststart + 6 + laststart[1],
|
||||||
|
b - 1);
|
||||||
|
alignedp = ((uintptr_t)(laststart + 6 + laststart[1])
|
||||||
|
+ __alignof__(wctype_t) - 1)
|
||||||
|
& ~(uintptr_t)(__alignof__(wctype_t) - 1);
|
||||||
/* Store the character class. */
|
/* Store the character class. */
|
||||||
*((wctype_t*)(laststart + 6)) = wt;
|
*((wctype_t*)alignedp) = wt;
|
||||||
/* Update length of char_classes */
|
/* Update length of char_classes */
|
||||||
laststart[1] += CHAR_CLASS_SIZE;
|
laststart[1] += CHAR_CLASS_SIZE;
|
||||||
|
|
||||||
@ -6001,7 +6008,11 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||||||
/* match with char_class? */
|
/* match with char_class? */
|
||||||
for (i = 0; i < char_class_length ; i += CHAR_CLASS_SIZE)
|
for (i = 0; i < char_class_length ; i += CHAR_CLASS_SIZE)
|
||||||
{
|
{
|
||||||
wctype_t wctype = *((wctype_t*)workp);
|
wctype_t wctype;
|
||||||
|
uintptr_t alignedp = ((uintptr_t)workp
|
||||||
|
+ __alignof__(wctype_t) - 1)
|
||||||
|
& ~(uintptr_t)(__alignof__(wctype_t) - 1);
|
||||||
|
wctype = *((wctype_t*)alignedp);
|
||||||
workp += CHAR_CLASS_SIZE;
|
workp += CHAR_CLASS_SIZE;
|
||||||
if (iswctype((wint_t)c, wctype))
|
if (iswctype((wint_t)c, wctype))
|
||||||
goto char_set_matched;
|
goto char_set_matched;
|
||||||
|
Loading…
Reference in New Issue
Block a user