This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[committed] alpha: Use saturating arithmetic in memchr
- From: Richard Henderson <rth at twiddle dot net>
- To: libc-alpha at sourceware dot org
- Date: Wed, 1 Feb 2017 14:41:29 -0800
- Subject: [committed] alpha: Use saturating arithmetic in memchr
- Authentication-results: sourceware.org; auth=none
Like the PRs for x86 and powerpc, alpha can overflow N
depending on alignment.
r~
* sysdeps/alpha/memchr.c (__memchr): Use saturating arithmetic
adjusting the byte count.
diff --git a/sysdeps/alpha/memchr.c b/sysdeps/alpha/memchr.c
index 82c42c0..402088d 100644
--- a/sysdeps/alpha/memchr.c
+++ b/sysdeps/alpha/memchr.c
@@ -53,7 +53,10 @@ __memchr (const void *s, int xc, size_t n)
/* Align the source, and decrement the count by the number
of bytes searched in the first word. */
s_align = (const word *)((word)s & -8);
- n += ((word)s & 7);
+ {
+ size_t inc = n + ((word)s & 7);
+ n = inc | -(inc < n);
+ }
/* Deal with misalignment in the first word for the comparison. */
mask = (1ul << ((word)s & 7)) - 1;
--
2.9.3