diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-02 14:04:42 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-02 14:04:42 (GMT) |
| commit | 8b88557047ad397aac14c0dd161801501f95d97a (patch) | |
| tree | fd3fd98c2d97f1ddde2bba4694b88cfe12eda2c3 /src | |
| parent | 4741e7682af209b7cf92900167566a2ce14d4036 (diff) | |
| download | powder-8b88557047ad397aac14c0dd161801501f95d97a.zip powder-8b88557047ad397aac14c0dd161801501f95d97a.tar.gz | |
Fix missing and incorrect bitshifts preventing the correct reading of life, tmp and dcolour
Diffstat (limited to 'src')
| -rw-r--r-- | src/save.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -1028,7 +1028,7 @@ int parse_save_OPS(void *save, int size, int replace, int x0, int y0, unsigned c if(fieldDescriptor & 0x04) { if(i >= partsDataLen) goto fail; - partsptr[newIndex].life |= partsData[i++]; + partsptr[newIndex].life |= (((unsigned)partsData[i++]) << 8); } } @@ -1041,7 +1041,7 @@ int parse_save_OPS(void *save, int size, int replace, int x0, int y0, unsigned c if(fieldDescriptor & 0x10) { if(i >= partsDataLen) goto fail; - partsptr[newIndex].tmp |= partsData[i++]; + partsptr[newIndex].tmp |= (((unsigned)partsData[i++]) << 8); } } @@ -1056,10 +1056,10 @@ int parse_save_OPS(void *save, int size, int replace, int x0, int y0, unsigned c if(fieldDescriptor & 0x40) { if(i+3 >= partsDataLen) goto fail; - partsptr[newIndex].dcolour = partsData[i++]; - partsptr[newIndex].dcolour |= partsData[i++]<<8; - partsptr[newIndex].dcolour |= partsData[i++]<<16; - partsptr[newIndex].dcolour |= partsData[i++]<<24; + partsptr[newIndex].dcolour = (((unsigned)partsData[i++]) << 24); + partsptr[newIndex].dcolour |= (((unsigned)partsData[i++]) << 16); + partsptr[newIndex].dcolour |= (((unsigned)partsData[i++]) << 8); + partsptr[newIndex].dcolour |= ((unsigned)partsData[i++]); } //Read vx |
