This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Marking of functions with attributes like __wur
On 04/20/2012 02:47 AM, Andreas Jaeger wrote:
> On 04/11/2012 11:09 PM, Paul Eggert wrote:
>> I just now filed a bug report for this
>> <http://sourceware.org/bugzilla/show_bug.cgi?id=13970>.
>
> Paul, could you send your patch on the list for review, please?
Sure, here it is (I fixed one incorrect word in the proposed ChangeLog):
---
ChangeLog | 10 ++++++++++
stdlib/stdlib.h | 32 ++++++++++++++++----------------
2 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 41e6190..e43eb02 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2012-04-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * stdlib/stdlib.h: Remove warn_unused_result attribute from strtol etc.
+ (strtod, strtof, strtold, strtol, strtoul, strtoq)
+ (strtouq, strtoll, strtoull, strtol_l, strtoul_l, strtoll_l, strtoull_l)
+ (strtod_l, strtof_l, strtold_l): Remove __wur.
+ It is not necessarily an error to ignore strtol's return value.
+ One can reliably look at the stored endptr to decide whether
+ the number had valid syntax.
+
2012-04-11 David S. Miller <davem@davemloft.net>
* sysdeps/sparc/fpu/libm-test-ulps: Update.
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 4da4678..cdc9e02 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -163,18 +163,18 @@ __BEGIN_NAMESPACE_STD
/* Convert a string to a floating-point number. */
extern double strtod (const char *__restrict __nptr,
char **__restrict __endptr)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Likewise for `float' and `long double' sizes of floating-point numbers. */
extern float strtof (const char *__restrict __nptr,
- char **__restrict __endptr) __THROW __nonnull ((1)) __wur;
+ char **__restrict __endptr) __THROW __nonnull ((1));
extern long double strtold (const char *__restrict __nptr,
char **__restrict __endptr)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
__END_NAMESPACE_C99
#endif
@@ -182,11 +182,11 @@ __BEGIN_NAMESPACE_STD
/* Convert a string to a long integer. */
extern long int strtol (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
/* Convert a string to an unsigned long integer. */
extern unsigned long int strtoul (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
__END_NAMESPACE_STD
#if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD
@@ -194,12 +194,12 @@ __END_NAMESPACE_STD
__extension__
extern long long int strtoq (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
/* Convert a string to an unsigned quadword integer. */
__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
#endif /* GCC and use BSD. */
#if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC)
@@ -208,12 +208,12 @@ __BEGIN_NAMESPACE_C99
__extension__
extern long long int strtoll (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
/* Convert a string to an unsigned quadword integer. */
__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
- __THROW __nonnull ((1)) __wur;
+ __THROW __nonnull ((1));
__END_NAMESPACE_C99
#endif /* ISO C99 or GCC and use MISC. */
@@ -238,37 +238,37 @@ __END_NAMESPACE_C99
use as an additional parameter. */
extern long int strtol_l (const char *__restrict __nptr,
char **__restrict __endptr, int __base,
- __locale_t __loc) __THROW __nonnull ((1, 4)) __wur;
+ __locale_t __loc) __THROW __nonnull ((1, 4));
extern unsigned long int strtoul_l (const char *__restrict __nptr,
char **__restrict __endptr,
int __base, __locale_t __loc)
- __THROW __nonnull ((1, 4)) __wur;
+ __THROW __nonnull ((1, 4));
__extension__
extern long long int strtoll_l (const char *__restrict __nptr,
char **__restrict __endptr, int __base,
__locale_t __loc)
- __THROW __nonnull ((1, 4)) __wur;
+ __THROW __nonnull ((1, 4));
__extension__
extern unsigned long long int strtoull_l (const char *__restrict __nptr,
char **__restrict __endptr,
int __base, __locale_t __loc)
- __THROW __nonnull ((1, 4)) __wur;
+ __THROW __nonnull ((1, 4));
extern double strtod_l (const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc)
- __THROW __nonnull ((1, 3)) __wur;
+ __THROW __nonnull ((1, 3));
extern float strtof_l (const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc)
- __THROW __nonnull ((1, 3)) __wur;
+ __THROW __nonnull ((1, 3));
extern long double strtold_l (const char *__restrict __nptr,
char **__restrict __endptr,
__locale_t __loc)
- __THROW __nonnull ((1, 3)) __wur;
+ __THROW __nonnull ((1, 3));
#endif /* GNU */
--
1.7.6.5