Skip to content

Commit

Permalink
Merge pull request #48558 from mortarroad/master-fix-misaligned-bmp
Browse files Browse the repository at this point in the history
fix misaligned loads in bmp loader
  • Loading branch information
akien-mga authored May 9, 2021
2 parents 87f8feb + 89a8bbd commit 6e3f479
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions modules/bmp/image_loader_bmp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -130,23 +130,19 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image,
line_ptr += 1;
} break;
case 24: {
uint32_t color = *((uint32_t *)line_ptr);

write_buffer[index + 2] = color & 0xff;
write_buffer[index + 1] = (color >> 8) & 0xff;
write_buffer[index + 0] = (color >> 16) & 0xff;
write_buffer[index + 2] = line_ptr[0];
write_buffer[index + 1] = line_ptr[1];
write_buffer[index + 0] = line_ptr[2];
write_buffer[index + 3] = 0xff;

index += 4;
line_ptr += 3;
} break;
case 32: {
uint32_t color = *((uint32_t *)line_ptr);

write_buffer[index + 2] = color & 0xff;
write_buffer[index + 1] = (color >> 8) & 0xff;
write_buffer[index + 0] = (color >> 16) & 0xff;
write_buffer[index + 3] = color >> 24;
write_buffer[index + 2] = line_ptr[0];
write_buffer[index + 1] = line_ptr[1];
write_buffer[index + 0] = line_ptr[2];
write_buffer[index + 3] = line_ptr[3];

index += 4;
line_ptr += 4;
Expand All @@ -172,11 +168,9 @@ Error ImageLoaderBMP::convert_to_image(Ref<Image> p_image,
const uint8_t *cb = p_color_buffer;

for (unsigned int i = 0; i < color_table_size; ++i) {
uint32_t color = *((uint32_t *)cb);

pal[i * 4 + 0] = (color >> 16) & 0xff;
pal[i * 4 + 1] = (color >> 8) & 0xff;
pal[i * 4 + 2] = (color)&0xff;
pal[i * 4 + 0] = cb[2];
pal[i * 4 + 1] = cb[1];
pal[i * 4 + 2] = cb[0];
pal[i * 4 + 3] = 0xff;

cb += 4;
Expand Down

0 comments on commit 6e3f479

Please sign in to comment.