Module Name: src Committed By: matt Date: Mon Jan 28 06:23:15 UTC 2013
Modified Files: src/common/lib/libc/arch/arm/string: strrchr_arm.S Log Message: Deal with an end-of-string condition properly. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/string/strrchr_arm.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/common/lib/libc/arch/arm/string/strrchr_arm.S diff -u src/common/lib/libc/arch/arm/string/strrchr_arm.S:1.1 src/common/lib/libc/arch/arm/string/strrchr_arm.S:1.2 --- src/common/lib/libc/arch/arm/string/strrchr_arm.S:1.1 Tue Jan 15 08:52:27 2013 +++ src/common/lib/libc/arch/arm/string/strrchr_arm.S Mon Jan 28 06:23:14 2013 @@ -29,7 +29,7 @@ #include <machine/asm.h> -RCSID("$NetBSD: strrchr_arm.S,v 1.1 2013/01/15 08:52:27 matt Exp $") +RCSID("$NetBSD: strrchr_arm.S,v 1.2 2013/01/28 06:23:14 matt Exp $") #ifdef __ARMEL__ #define BYTE0 0x000000ff @@ -94,6 +94,8 @@ ENTRY(strrchr) * Copy the NUL bit to the following byte lanes. Then clear any match * bits in those byte lanes to prevent false positives in those bytes. */ + bics r5, r5, r4 /* clear any NUL match bits */ + beq .Ldone /* no remaining matches, we're done */ movs r3, r4, lshi #8 /* shift up a byte */ orrnes r3, r3, r3, lshi #8 /* if non 0, copy up to next byte */ orrnes r3, r3, r3, lshi #8 /* if non 0, copy up to last byte */