| Index: chrome/installer/mini_installer/mini_installer.cc
|
| diff --git a/chrome/installer/mini_installer/mini_installer.cc b/chrome/installer/mini_installer/mini_installer.cc
|
| index 28a8057627e67353dc4fb8d737337f467ea22a56..25b0c80413049d6618a1e153e5cb0a0460fc4ced 100644
|
| --- a/chrome/installer/mini_installer/mini_installer.cc
|
| +++ b/chrome/installer/mini_installer/mini_installer.cc
|
| @@ -834,29 +834,11 @@ int MainEntryPoint() {
|
| extern "C" {
|
| #pragma function(memset)
|
| void* memset(void* dest, int c, size_t count) {
|
| - // Simplistic 32-bit memset C implementation which assumes properly aligned
|
| - // memory; performance hit on memory that isn't properly aligned, but still
|
| - // better overall then a 8-bit implementation.
|
| - size_t adjcount = count >> 2;
|
| - UINT32 fill = (c << 24 | c << 16 | c << 8 | c);
|
| - UINT32* dest32 = reinterpret_cast<UINT32*>(dest);
|
| - UINT8* dest8 = reinterpret_cast<UINT8*>(dest);
|
| -
|
| - // Take care of the ending 0-3 bytes (binary 11 = 3). The lack of breaks is
|
| - // deliberate; it falls through for each byte. Think of it a simplified for
|
| - // loop.
|
| - switch (count - (adjcount << 2)) {
|
| - case 3:
|
| - dest8[count - 3] = c;
|
| - case 2:
|
| - dest8[count - 2] = c;
|
| - case 1:
|
| - dest8[count - 1] = c;
|
| + void* start = dest;
|
| + while (count--) {
|
| + *reinterpret_cast<char*>(dest) = static_cast<char>(c);
|
| + dest = reinterpret_cast<char*>(dest) + 1;
|
| }
|
| -
|
| - while (adjcount-- > 0) // Copy the rest, 4 bytes/32 bits at a time
|
| - *(dest32++) = fill;
|
| -
|
| - return dest;
|
| + return start;
|
| }
|
| } // extern "C"
|
|
|