rem: uint32 *outRowData = (uint32 *)rowAllocator.Allocate(outRowBytes);
add: rgba32_color *outRowData = (rgba32_color *)rowAllocator.Allocate(outRowBytes);
context: convert_data_to_bits(ico_dir_entry &entry, ico_bitmap_header &header,	const uint32 *palette, BPositionIO &source,	BPositionIO &target){	uint16 bitsPerPixel = header.bits_per_pixel;	// round row bytes to next 4 byte boundary	int32 xorRowBytes = get_bytes_per_row(entry.width, header.bits_per_pixel);	int32 andRowBytes = get_bytes_per_row(entry.width, 1);	int32 outRowBytes = entry.width * 4;	// allocate buffers	TempAllocator xorAllocator, andAllocator, rowAllocator;	int32 xorDataSize = xorRowBytes * entry.height;	uint8 *xorData = (uint8 *)xorAllocator.Allocate(xorDataSize);	if (xorData == NULL)		return B_NO_MEMORY;	int32 andDataSize = andRowBytes * entry.height;	uint8 *andData = (uint8 *)andAllocator.Allocate(andDataSize);	if (andData == NULL)		return B_NO_MEMORY;	uint32 *outRowData = (uint32 *)rowAllocator.Allocate(outRowBytes);	if (outRowData == NULL)		return B_NO_MEMORY;	ssize_t bytesRead = source.Read(xorData, xorDataSize);	if (bytesRead != xorDataSize)		return B_BAD_DATA;	bytesRead = source.Read(andData, andDataSize);	if (bytesRead != andDataSize)		return B_BAD_DATA;	for (uint32 row = 0; row < entry.height; row++) {		for (uint32 x = 0; x < entry.width; x++) {			uint8 *line = get_data_row(xorData, xorDataSize, xorRowBytes, row);			if (palette != NULL) {				uint8 index;				switch (bitsPerPixel) {					case 1:						index = get_1_bit_per_pixel(line, x);						break;					case 4:						index = get_4_bits_per_pixel(line, x);						break;					case 8:					default:						index = line[x];						break;				}				outRowData[x] = palette[index];			} else				outRowData[x] = ((uint32 *)line)[x];			if (bitsPerPixel != 32) {				// set alpha channel				if (get_1_bit_per_pixel(get_data_row(andData, andDataSize, andRowBytes, row), x))					outRowData[x] = B_TRANSPARENT_MAGIC_RGBA32;				else					((ico_color *)&outRowData[x])->alpha = 255;			}		}		ssize_t bytesWritten = target.Write(outRowData, outRowBytes);		if (bytesWritten < B_OK)			return bytesWritten;		if (bytesWritten != outRowBytes)			return B_BAD_DATA;	}	return B_OK;}