Update.
2004-03-09  Ulrich Drepper  <drepper@redhat.com>

	* stdlib/qsort.c (_quicksort): Initialize first stack element [BZ #16].

2004-03-05  Jakub Jelinek  <jakub@redhat.com>

	* posix/regexec.c (regexec): Return with error on unknown eflags.
	Replace weak_alias with versioned_symbol.
	(__compat_regexec): New.
	* posix/Versions (libc): Add regexec@GLIBC_2.3.4.
This commit is contained in:
Ulrich Drepper 2004-03-10 06:46:51 +00:00
parent f4c024d1f9
commit 3f2fb22342
5 changed files with 43 additions and 14 deletions

View File

@ -1,3 +1,14 @@
2004-03-09 Ulrich Drepper <drepper@redhat.com>
* stdlib/qsort.c (_quicksort): Initialize first stack element [BZ #16].
2004-03-05 Jakub Jelinek <jakub@redhat.com>
* posix/regexec.c (regexec): Return with error on unknown eflags.
Replace weak_alias with versioned_symbol.
(__compat_regexec): New.
* posix/Versions (libc): Add regexec@GLIBC_2.3.4.
2004-03-09 Richard Henderson <rth@redhat.com> 2004-03-09 Richard Henderson <rth@redhat.com>
* math/math.h (isgreater, isgreaterequal, isless, islessequal, * math/math.h (isgreater, isgreaterequal, isless, islessequal,

View File

@ -1,15 +1,8 @@
2004-03-09 Richard Henderson <rth@redhat.com> 2004-03-09 Jakub Jelinek <jakub@redhat.com>
* math/math.h (isgreater, isgreaterequal, isless, islessequal, * tst-cancel20.c (do_one_test): Clear in_sh_body first.
islessgreater, isunordered): Use builtins if available. * tst-cancel21.c (do_one_test): Likewise.
* sysdeps/i386/fpu/bits/mathinline.h: Don't define via builtins. Reported by Gordon Jin <gordon.jin@intel.com>.
* sysdeps/m68k/fpu/bits/mathinline.h: Likewise.
* sysdeps/powerpc/fpu/bits/mathinline.h: Likewise.
* sysdeps/sparc/fpu/bits/mathinline.h: Likewise.
* sysdeps/x86_64/fpu/bits/mathinline.h: Likewise.
* sysdeps/alpha/fpu/bits/mathinline.h (isgreater, isgreaterequal,
isless, islessequal, islessgreater): Remove; use default.
(isunordered): Convert inputs to double.
2004-02-09 Jakub Jelinek <jakub@redhat.com> 2004-02-09 Jakub Jelinek <jakub@redhat.com>

View File

@ -119,6 +119,9 @@ libc {
GLIBC_2.3.3 { GLIBC_2.3.3 {
sched_getaffinity; sched_setaffinity; sched_getaffinity; sched_setaffinity;
} }
GLIBC_2.3.4 {
regexec;
}
GLIBC_PRIVATE { GLIBC_PRIVATE {
# functions which have an additional interface since they are # functions which have an additional interface since they are
# are cancelable. # are cancelable.

View File

@ -216,6 +216,10 @@ regexec (preg, string, nmatch, pmatch, eflags)
{ {
reg_errcode_t err; reg_errcode_t err;
int start, length; int start, length;
if (eflags & ~(REG_NOTBOL | REG_NOTEOL | REG_STARTEND))
return REG_BADPAT;
if (eflags & REG_STARTEND) if (eflags & REG_STARTEND)
{ {
start = pmatch[0].rm_so; start = pmatch[0].rm_so;
@ -234,8 +238,24 @@ regexec (preg, string, nmatch, pmatch, eflags)
length, nmatch, pmatch, eflags); length, nmatch, pmatch, eflags);
return err != REG_NOERROR; return err != REG_NOERROR;
} }
#ifdef _LIBC #ifdef _LIBC
weak_alias (__regexec, regexec) # include <shlib-compat.h>
versioned_symbol (libc, __regexec, regexec, GLIBC_2_3_4);
# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
__typeof__ (__regexec) __compat_regexec;
int
__compat_regexec (const regex_t *__restrict preg,
const char *__restrict string, size_t nmatch,
regmatch_t pmatch[], int eflags)
{
return regexec (preg, string, nmatch, pmatch,
eflags & (REG_NOTBOL | REG_NOTEOL));
}
compat_symbol (libc, __compat_regexec, regexec, GLIBC_2_0);
# endif
#endif #endif
/* Entry points for GNU code. */ /* Entry points for GNU code. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1996, 1997, 1999 Free Software Foundation, Inc. /* Copyright (C) 1991,1992,1996,1997,1999,2004 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Written by Douglas C. Schmidt (schmidt@ics.uci.edu). Written by Douglas C. Schmidt (schmidt@ics.uci.edu).
@ -103,7 +103,9 @@ _quicksort (void *const pbase, size_t total_elems, size_t size,
char *lo = base_ptr; char *lo = base_ptr;
char *hi = &lo[size * (total_elems - 1)]; char *hi = &lo[size * (total_elems - 1)];
stack_node stack[STACK_SIZE]; stack_node stack[STACK_SIZE];
stack_node *top = stack + 1; stack_node *top = stack;
PUSH (NULL, NULL);
while (STACK_NOT_EMPTY) while (STACK_NOT_EMPTY)
{ {