From 6eb4415eaaaa2a01209262555f0a115a46deeb36 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Fri, 26 Dec 2008 02:50:13 +0000 Subject: include/libc-string_i386.h: fix a bug where memset('\xff') misbehaves Rules.mak: add -funsigned-char, to forestall future PITA --- include/libc-string_i386.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/libc-string_i386.h b/include/libc-string_i386.h index 3ed9c8783..3eefdeb76 100644 --- a/include/libc-string_i386.h +++ b/include/libc-string_i386.h @@ -26,7 +26,9 @@ void *inlined_memset_const_c_count4(void *s, unsigned eax, unsigned count) return s; } - eax *= 0x01010101; /* done at compile time */ + /* You wonder why & 0xff is needed? Try memset(p, '\xff', size). + * If char is signed, '\xff' == -1! */ + eax = (eax & 0xff) * 0x01010101; /* done at compile time */ if (count == 2) { *(short *)(s + 0) = eax; -- cgit v1.2.3