DEADSOFTWARE

fix network on big-endian machines
[d2df-sdl.git] / src / engine / e_msg.pas
index bb7347740bd950401a0bfc4d49626b41c6884069..f5711ec3079d6b46f7aa38d9a2b5b28b2ebe164c 100644 (file)
@@ -2,8 +2,7 @@
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * the Free Software Foundation, version 3 of the License ONLY.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -150,7 +149,7 @@ begin
   begin
     if OwnMemory then
     begin
-      NewSize := MaxSize + ((N + AllocStep) div AllocStep) * AllocStep; // round up
+      NewSize := MaxSize + ((N + AllocStep - 1) div AllocStep) * AllocStep; // round up
       if ReAllocMem(Data, NewSize) = nil then
         raise Exception.Create('TMsg.WriteData: out of memory on realloc');
       MaxSize := NewSize;
@@ -178,31 +177,37 @@ end;
 
 procedure TMsg.Write(V: Word); overload;
 begin
+  V := NtoLE(V);
   WriteData(@V, 2);
 end;
 
 procedure TMsg.Write(V: LongWord); overload;
 begin
+  V := NtoLE(V);
   WriteData(@V, 4);
 end;
 
 procedure TMsg.Write(V: ShortInt); overload;
 begin
+  V := NtoLE(V);
   WriteData(@V, 1);
 end;
 
 procedure TMsg.Write(V: SmallInt); overload;
 begin
+  V := NtoLE(V);
   WriteData(@V, 2);
 end;
 
 procedure TMsg.Write(V: LongInt); overload;
 begin
+  V := NtoLE(V);
   WriteData(@V, 4);
 end;
 
 procedure TMsg.Write(V: Int64); overload;
 begin
+  V := NtoLE(V);
   WriteData(@V, 8);
 end;
 
@@ -280,36 +285,42 @@ function TMsg.ReadWord(): Word;
 begin
   Result := 0;
   ReadData(@Result, 2);
+  Result := LEtoN(Result);
 end;
 
 function TMsg.ReadLongWord(): LongWord;
 begin
   Result := 0;
   ReadData(@Result, 4);
+  Result := LEtoN(Result);
 end;
 
 function TMsg.ReadShortInt(): ShortInt;
 begin
   Result := 0;
   ReadData(@Result, 1);
+  Result := LEtoN(Result);
 end;
 
 function TMsg.ReadSmallInt(): SmallInt;
 begin
   Result := 0;
   ReadData(@Result, 2);
+  Result := LEtoN(Result);
 end;
 
 function TMsg.ReadLongInt(): LongInt;
 begin
   Result := 0;
   ReadData(@Result, 4);
+  Result := LEtoN(Result);
 end;
 
 function TMsg.ReadInt64(): Int64;
 begin
   Result := 0;
   ReadData(@Result, 8);
+  Result := LEtoN(Result);
 end;
 
 function TMsg.ReadString(): string;