aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/alpha/memchr.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f9b94fb..b2f41e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-02-01 Richard Henderson <rth@twiddle.net>
+
+ * sysdeps/alpha/memchr.c (__memchr): Use saturating arithmetic
+ adjusting the byte count.
+
2017-02-01 Andreas Schwab <schwab@linux-m68k.org>
* conform/Makefile (linknamespace-libs): Define.
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;