X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmemrchr.c;h=d7144d0482355869f2ec6b962964ad85c58d1985;hb=d48d7d9132b633a3a31a2f6f131ce7033f1faf8d;hp=da93ca0ba52a2cd88ce0cf225a832ef14bf8c606;hpb=8b8527c54ce6fc1331805d44bd2c556b58976844;p=gnulib.git diff --git a/lib/memrchr.c b/lib/memrchr.c index da93ca0ba..d7144d048 100644 --- a/lib/memrchr.c +++ b/lib/memrchr.c @@ -1,7 +1,7 @@ /* memrchr -- find the last occurrence of a byte in a memory block - Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2005, - 2006, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2011 Free Software + Foundation, Inc. Based on strlen implementation by Torbjorn Granlund (tege@sics.se), with help from Dan Sahlin (dan@sics.se) and @@ -84,15 +84,15 @@ __memrchr (void const *s, int c_in, size_t n) repeated_one |= repeated_one << 31 << 1; repeated_c |= repeated_c << 31 << 1; if (8 < sizeof (longword)) - { - size_t i; - - for (i = 64; i < sizeof (longword) * 8; i *= 2) - { - repeated_one |= repeated_one << i; - repeated_c |= repeated_c << i; - } - } + { + size_t i; + + for (i = 64; i < sizeof (longword) * 8; i *= 2) + { + repeated_one |= repeated_one << i; + repeated_c |= repeated_c << i; + } + } } /* Instead of the traditional loop which tests each byte, we will test a @@ -131,11 +131,11 @@ __memrchr (void const *s, int c_in, size_t n) longword longword1 = *--longword_ptr ^ repeated_c; if ((((longword1 - repeated_one) & ~longword1) - & (repeated_one << 7)) != 0) - { - longword_ptr++; - break; - } + & (repeated_one << 7)) != 0) + { + longword_ptr++; + break; + } n -= sizeof (longword); } @@ -151,7 +151,7 @@ __memrchr (void const *s, int c_in, size_t n) while (n-- > 0) { if (*--char_ptr == c) - return (void *) char_ptr; + return (void *) char_ptr; } return NULL;