DEADSOFTWARE

Fix access violation on x86_64
[d2df-sdl.git] / src / shared / MAPREADER.pas
index 6c9e86326551d7b0d24ba7e8151aed028e565c01..a122bee5cb0b13d6f47ba5679edf30d3cdc0c31f 100644 (file)
@@ -152,7 +152,7 @@ function TMapReader_1.GetAreas(): TAreasRec1Array;
 var
   TempDataBlocks: TDataBlocksArray;
   a: Integer;
-  b, Size: LongWord;
+  b, Size: NativeInt;
 begin
  Result := nil;
 
@@ -167,7 +167,7 @@ begin
   begin
    SetLength(Result, Length(Result)+1);
    //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
-   mb_Read_TAreaRec_1(Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size)^, size);
+   mb_Read_TAreaRec_1(Result[High(Result)], Pointer(NativeInt(TempDataBlocks[a].Data)+b*size)^, size);
   end;
 
  TempDataBlocks := nil;
@@ -177,7 +177,7 @@ function TMapReader_1.GetItems(): TItemsRec1Array;
 var
   TempDataBlocks: TDataBlocksArray;
   a: Integer;
-  b, Size: LongWord;
+  b, Size: NativeInt;
 begin
  Result := nil;
 
@@ -192,7 +192,7 @@ begin
   begin
    SetLength(Result, Length(Result)+1);
    //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
-   mb_Read_TItemRec_1(Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size)^, size);
+   mb_Read_TItemRec_1(Result[High(Result)], Pointer(NativeInt(TempDataBlocks[a].Data)+b*size)^, size);
   end;
 
  TempDataBlocks := nil;
@@ -218,7 +218,7 @@ function TMapReader_1.GetMonsters(): TMonsterRec1Array;
 var
   TempDataBlocks: TDataBlocksArray;
   a: Integer;
-  b, Size: LongWord;
+  b, Size: NativeInt;
 begin
  Result := nil;
 
@@ -233,7 +233,7 @@ begin
   begin
    SetLength(Result, Length(Result)+1);
    //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
-   mb_Read_TMonsterRec_1(Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size)^, size);
+   mb_Read_TMonsterRec_1(Result[High(Result)], Pointer(NativeInt(TempDataBlocks[a].Data)+b*size)^, size);
   end;
 
  TempDataBlocks := nil;
@@ -243,7 +243,7 @@ function TMapReader_1.GetPanels(): TPanelsRec1Array;
 var
   TempDataBlocks: TDataBlocksArray;
   a: Integer;
-  b, Size: LongWord;
+  b, Size: NativeInt;
 begin
  Result := nil;
 
@@ -258,7 +258,7 @@ begin
   begin
    SetLength(Result, Length(Result)+1);
    //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
-   mb_Read_TPanelRec_1(Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size)^, size);
+   mb_Read_TPanelRec_1(Result[High(Result)], Pointer(NativeInt(TempDataBlocks[a].Data)+b*size)^, size);
   end;
 
  TempDataBlocks := nil;
@@ -268,7 +268,7 @@ function TMapReader_1.GetTextures(): TTexturesRec1Array;
 var
   TempDataBlocks: TDataBlocksArray;
   a: Integer;
-  b, Size: LongWord;
+  b, Size: NativeInt;
 begin
  Result := nil;
 
@@ -282,8 +282,8 @@ begin
   for b := 0 to (TempDataBlocks[a].Block.BlockSize div size)-1 do
   begin
    SetLength(Result, Length(Result)+1);
-   //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
-   mb_Read_TTextureRec_1(Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size)^, size);
+    //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
+    mb_Read_TTextureRec_1(Result[High(Result)], Pointer(NativeInt(TempDataBlocks[a].Data)+b*size)^, size);
   end;
 
  TempDataBlocks := nil;
@@ -293,7 +293,8 @@ function TMapReader_1.GetTriggers(): TTriggersRec1Array;
 var
   TempDataBlocks: TDataBlocksArray;
   a: Integer;
-  b, Size: LongWord;
+  b: NativeInt;
+  Size: LongWord;
   trdata: TTriggerData;
 begin
  Result := nil;
@@ -309,7 +310,7 @@ begin
   begin
    SetLength(Result, Length(Result)+1);
    //CopyMemory(@Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size), size);
-   mb_Read_TTriggerRec_1(Result[High(Result)], Pointer(LongWord(TempDataBlocks[a].Data)+b*size)^, size);
+   mb_Read_TTriggerRec_1(Result[High(Result)], Pointer(NativeInt(TempDataBlocks[a].Data)+b*size)^, size);
    if (Result[High(Result)].TriggerType <> 0) then
    begin
      // preprocess trigger data
@@ -368,7 +369,7 @@ begin
   if FDataBlocks[a].Block.BlockType = BlocksType then
   begin
    SetLength(Result, Length(Result)+1);
-   Result[High(Result)] := FDataBlocks[a];
+    Result[High(Result)] := FDataBlocks[a];
   end;
 end;
 
@@ -379,7 +380,7 @@ end;
 
 function TMapReader.LoadMap(Data: Pointer): Boolean;
 var
-  adr: LongWord;
+  adr: NativeInt;
   _id: Integer;
   Sign: array[0..2] of Char;
   Ver: Byte;
@@ -394,7 +395,7 @@ begin
  end;
  adr := 3;
 
- CopyMemory(@Ver, Pointer(LongWord(Data)+adr), 1);
+ CopyMemory(@Ver, Pointer(NativeInt(Data)+adr), 1);
  FVersion := Ver;
  if Ver > HandledVersion() then
  begin
@@ -407,12 +408,12 @@ begin
   SetLength(FDataBlocks, Length(FDataBlocks)+1);
   _id := High(FDataBlocks);
 
-  CopyMemory(@FDataBlocks[_id].Block, Pointer(LongWord(Data)+adr), SizeOf(TBlock));
+  CopyMemory(@FDataBlocks[_id].Block, Pointer(NativeInt(Data)+adr), SizeOf(TBlock));
   adr := adr+SizeOf(TBlock);
 
   FDataBlocks[_id].Data := GetMemory(FDataBlocks[_id].Block.BlockSize);
 
-  CopyMemory(FDataBlocks[_id].Data, Pointer(LongWord(Data)+adr), FDataBlocks[_id].Block.BlockSize);
+  CopyMemory(FDataBlocks[_id].Data, Pointer(NativeInt(Data)+adr), FDataBlocks[_id].Block.BlockSize);
 
   adr := adr+FDataBlocks[_id].Block.BlockSize;
  until FDataBlocks[_id].Block.BlockType = BLOCK_NONE;