This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.17-6-g7fffbdf
- From: aj at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 27 Dec 2012 21:38:43 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.17-6-g7fffbdf
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via 7fffbdfff7d39cec0783e5b9381fa4093484c235 (commit)
from 9c7595bda2c37b31e82dab424bfd3015664b176d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=7fffbdfff7d39cec0783e5b9381fa4093484c235
commit 7fffbdfff7d39cec0783e5b9381fa4093484c235
Author: 2012-12-27 Bruno Haible <bruno@clisp.org>
Date: Thu Dec 27 22:37:39 2012 +0100
BZ#14317: Optimze __xpg_strerror_r
[BZ #14317]
* string/xpg-strerror.c (__xpg_strerror_r): Optimize, call
strlen only if needed.
diff --git a/ChangeLog b/ChangeLog
index 2a9a361..879fe2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-27 Bruno Haible <bruno@clisp.org>
+
+ [BZ #14317]
+ * string/xpg-strerror.c (__xpg_strerror_r): Optimize, call strlen
+ only if needed.
+
2012-12-27 Siddhesh Poyarekar <siddhesh@redhat.com>
* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Eliminate __mpexp_nn
diff --git a/NEWS b/NEWS
index c00b555..bae3e41 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,8 @@ Version 2.18
* The following bugs are resolved with this release:
+ 14317.
+
Version 2.17
diff --git a/string/xpg-strerror.c b/string/xpg-strerror.c
index 7e46b33..73600fb 100644
--- a/string/xpg-strerror.c
+++ b/string/xpg-strerror.c
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991, 1993, 1995-1998, 2000, 2002, 2004, 2010, 2011
- Free Software Foundation, Inc.
+/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -28,20 +27,27 @@ int
__xpg_strerror_r (int errnum, char *buf, size_t buflen)
{
const char *estr = __strerror_r (errnum, buf, buflen);
- size_t estrlen = strlen (estr);
+ /* We know that __strerror_r returns buf (with a dynamically computed
+ string) if errnum is invalid, otherwise it returns a string whose
+ storage has indefinite extent. */
if (estr == buf)
{
assert (errnum < 0 || errnum >= _sys_nerr_internal
|| _sys_errlist_internal[errnum] == NULL);
return EINVAL;
}
- assert (errnum >= 0 && errnum < _sys_nerr_internal
- && _sys_errlist_internal[errnum] != NULL);
+ else
+ {
+ assert (errnum >= 0 && errnum < _sys_nerr_internal
+ && _sys_errlist_internal[errnum] != NULL);
+
+ size_t estrlen = strlen (estr);
- /* Terminate the string in any case. */
- if (buflen > 0)
- *((char *) __mempcpy (buf, estr, MIN (buflen - 1, estrlen))) = '\0';
+ /* Terminate the string in any case. */
+ if (buflen > 0)
+ *((char *) __mempcpy (buf, estr, MIN (buflen - 1, estrlen))) = '\0';
- return buflen <= estrlen ? ERANGE : 0;
+ return buflen <= estrlen ? ERANGE : 0;
+ }
}
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 6 ++++++
NEWS | 2 ++
string/xpg-strerror.c | 24 +++++++++++++++---------
3 files changed, 23 insertions(+), 9 deletions(-)
hooks/post-receive
--
GNU C Library master sources