Skip to content

Commit

Permalink
Update.
Browse files Browse the repository at this point in the history
	* posix/regex.c: Fix alignment problem.
	Patch by Isamu Hasegawa <isamu@yamato.ibm.com>.

	Contributed by Rick Gorton <rick.gorton@alpha-processor.com>.
  • Loading branch information
Ulrich Drepper committed Feb 9, 2001
1 parent 6b58cbc commit 441f7d1
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 5 deletions.
5 changes: 4 additions & 1 deletion ChangeLog
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
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.
Patch by Richard Henderson <rth@redhat.com>.

* 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>

Expand Down
4 changes: 4 additions & 0 deletions linuxthreads/ChangeLog
Original file line number Diff line number Diff line change
@@ -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>

* sysdeps/unix/sysv/linux/s390/pt-initfini.c: New file.
Expand Down
19 changes: 15 additions & 4 deletions posix/regex.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
# define US_CHAR_TYPE wchar_t/* unsigned character type */
# define COMPILED_BUFFER_VAR wc_buffer
# 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) \
do { \
if (MC_CUR_MAX == 1) \
Expand Down Expand Up @@ -2807,6 +2807,8 @@ regex_compile (pattern, size, syntax, bufp)
if (c == ':' && *p == ']')
{
wctype_t wt;
uintptr_t alignedp;

/* Query the character class as wctype_t. */
wt = IS_CHAR_CLASS (str);
if (wt == 0)
Expand All @@ -2824,9 +2826,14 @@ regex_compile (pattern, size, syntax, bufp)
b += CHAR_CLASS_SIZE;
/* Move data which follow character classes
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. */
*((wctype_t*)(laststart + 6)) = wt;
*((wctype_t*)alignedp) = wt;
/* Update length of char_classes */
laststart[1] += CHAR_CLASS_SIZE;

Expand Down Expand Up @@ -6001,7 +6008,11 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
/* match with char_class? */
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;
if (iswctype((wint_t)c, wctype))
goto char_set_matched;
Expand Down

0 comments on commit 441f7d1

Please sign in to comment.