diff --git a/SpaceCadetPinball/partman.cpp b/SpaceCadetPinball/partman.cpp index 16d811c..2901d74 100644 --- a/SpaceCadetPinball/partman.cpp +++ b/SpaceCadetPinball/partman.cpp @@ -92,16 +92,18 @@ DatFile* partman::load_records(LPCSTR lpFileName, bool fullTiltMode) fread(&zMapHeader, 1, sizeof(dat16BitBmpHeader), fileHandle); auto length = fieldSize - sizeof(dat16BitBmpHeader); - auto zMap = new zmap_header_type(zMapHeader.Width, zMapHeader.Height, zMapHeader.Stride); - zMap->Resolution = zMapResolution; + zmap_header_type* zMap; if (zMapHeader.Stride * zMapHeader.Height * 2u == length) { + zMap = new zmap_header_type(zMapHeader.Width, zMapHeader.Height, zMapHeader.Stride); + zMap->Resolution = zMapResolution; fread(zMap->ZPtr1, 1, length, fileHandle); } else { // 3DPB .dat has zeroed zMap headers, in groups 497 and 498, skip them. fseek(fileHandle, static_cast(length), SEEK_CUR); + zMap = new zmap_header_type(0, 0, 0); } entryData->Buffer = reinterpret_cast(zMap); }