Permalink
Browse files

ecere/BMP loading: Worked around struct packing issue with GCC 4.7

  • Loading branch information...
1 parent b42526f commit a0f37656a3f8d216bc42a3a3bcebeb1ac21bcab0 @jerstlouis jerstlouis committed Aug 19, 2012
Showing with 8 additions and 5 deletions.
  1. +1 −1 NEWS
  2. +7 −4 ecere/src/gfx/bitmaps/BMPFormat.ec
View
2 NEWS
@@ -180,7 +180,7 @@ Ecere SDK 0.40 (September 27, 2006) (v3)
----------------------------------------
( Summer 2004 )
- * ICQ/AIM Ecere Communitcator (eMessenger)
+ * ICQ/AIM Ecere Communicator (eMessenger)
* The Dreamix Project - a set top box PVR
* Python Bindings for Ecere
----------------------------------------
@@ -304,8 +304,10 @@ class BMPFormat : BitmapFormat
BMPHead header;
BMPInfo info;
-
- if(f.Read(header, sizeof(header), 1) && header.type[0] == 'B' && header.type[1] == 'M' && f.Read(info, sizeof(info), 1))
+ // if(f.Read(&header, sizeof(header), 1) && header.type[0] == 'B' && header.type[1] == 'M' && f.Read(info, sizeof(info), 1))
+ if(f.Read(&header.type, 2, 1) && header.type[0] == 'B' && header.type[1] == 'M' &&
+ f.Read(&header.size,sizeof(header) - (uint)&((BMPHead *)0)->size,1) &&
+ f.Read(info, sizeof(info), 1))
{
header.Swap();
info.Swap();
@@ -336,7 +338,8 @@ class BMPFormat : BitmapFormat
header.Swap();
- if(f.Write(&header,sizeof(header),1))
+ //if(f.Write(&header,sizeof(header),1))
+ if(f.Write(&header.type, 2, 1) && f.Write(&header.size,sizeof(header) - (uint)&((BMPHead *)0)->size,1))
{
BMPInfo info;
@@ -488,7 +491,7 @@ class BMPFormat : BitmapFormat
{
BMPHead header;
//Load BMP header
- if(f.Read(&header,sizeof(header),1))
+ if(f.Read(&header.type, 2, 1) && f.Read(&header.size,sizeof(header) - (uint)&((BMPHead *)0)->size,1))
{
BMPInfo info;
if(f.Read(&info,sizeof(info),1))

0 comments on commit a0f3765

Please sign in to comment.