--- 20040817-gcc4.patch.original 2006-05-28 21:30:33.605403307 +0200 +++ 20040817-gcc4.patch 2006-05-28 22:31:45.612335332 +0200 @@ -26,40 +26,40 @@ - case 1: *((unsigned char*)buffer)++ = fill_value; return; - case 2: *((unsigned short*)buffer)++ = fill_value; return; - case 3: { unsigned char *p=buffer; p[2]=p[1]=p[0] = fill_value;} return; -+ case 1: ++p; *p = fill_value; return; -+ case 2: ++s; *s = fill_value; return; ++ case 1: *p = fill_value; return; ++ case 2: *s = fill_value; return; + case 3: { p[2]=p[1]=p[0] = fill_value;} return; default: if ((int)buffer&1) { - *((unsigned char*)buffer)++ = fill_value; size--; -+ ++p; *p = fill_value; size--; ++ *p = fill_value; ++p; size--; + buffer = p; } if ((int)buffer&2) { - *((unsigned short*)buffer)++ = fill_value; size-=2; -+ ++s; *s = fill_value; size-=2; ++ *s = fill_value; ++s; size-=2; + buffer = s; } lsize = size>>2; + unsigned int *up = buffer; while(lsize) { - *((unsigned int*)buffer)++ = fill_value; -+ ++up; + *up = fill_value; ++ ++up; lsize--; } + buffer = up; if (size&2) { - *((unsigned short*)buffer)++ = fill_value; + s = buffer; -+ ++s; + *s = fill_value; ++ ++s; } if (size&1) { - *((unsigned char*)buffer)++ = fill_value; + p = buffer; -+ ++p; + *p = fill_value; ++ ++p; } } }