Browse Source

Merge pull request #127 from nillerusr/custom

imagelib: fix unaligned access
pull/2/head
mittorn 5 years ago committed by GitHub
parent
commit
3e7351cb33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 16
      engine/common/imagelib/img_wad.c

16
engine/common/imagelib/img_wad.c

@ -199,8 +199,9 @@ Image_LoadSPR @@ -199,8 +199,9 @@ Image_LoadSPR
*/
qboolean Image_LoadSPR( const char *name, const byte *buffer, fs_offset_t filesize )
{
dspriteframe_t *pin; // identical for q1\hl sprites
dspriteframe_t pin; // identical for q1\hl sprites
qboolean truecolor = false;
byte *fin;
if( image.hint == IL_HINT_HL )
{
@ -217,9 +218,9 @@ qboolean Image_LoadSPR( const char *name, const byte *buffer, fs_offset_t filesi @@ -217,9 +218,9 @@ qboolean Image_LoadSPR( const char *name, const byte *buffer, fs_offset_t filesi
return false;
}
pin = (dspriteframe_t *)buffer;
image.width = pin->width;
image.height = pin->height;
memcpy( &pin, buffer, sizeof(dspriteframe_t) );
image.width = pin.width;
image.height = pin.height;
if( filesize < image.width * image.height )
return false;
@ -243,18 +244,19 @@ qboolean Image_LoadSPR( const char *name, const byte *buffer, fs_offset_t filesi @@ -243,18 +244,19 @@ qboolean Image_LoadSPR( const char *name, const byte *buffer, fs_offset_t filesi
SetBits( image.flags, IMAGE_HAS_ALPHA );
break;
}
fin = (byte *)(buffer + sizeof(dspriteframe_t));
if( truecolor )
{
// spr32 support
image.size = image.width * image.height * 4;
image.rgba = Mem_Malloc( host.imagepool, image.size );
memcpy( image.rgba, (byte *)(pin + 1), image.size );
memcpy( image.rgba, fin, image.size );
SetBits( image.flags, IMAGE_HAS_COLOR ); // Color. True Color!
return true;
}
return Image_AddIndexedImageToPack( (byte *)(pin + 1), image.width, image.height );
return Image_AddIndexedImageToPack( fin, image.width, image.height );
}
/*

Loading…
Cancel
Save