ソースを参照

* fixed cutils local copy of swapendian

git-svn-id: trunk@10929 -
Jonas Maebe 17 年 前
コミット
b3d731f9a8
1 ファイル変更5 行追加1 行削除
  1. 5 1
      compiler/cutils.pas

+ 5 - 1
compiler/cutils.pas

@@ -1341,7 +1341,11 @@ implementation
 {$ifdef ver2_0}
 function SwapEndian(const AValue: SmallInt): SmallInt;
   begin
-    Result := (AValue shr 8) or (AValue shl 8);
+    { the extra Word type cast is necessary because the "AValue shr 8" }
+    { is turned into "longint(AValue) shr 8", so if AValue < 0 then    }
+    { the sign bits from the upper 16 bits are shifted in rather than  }
+    { zeroes.                                                          }
+    Result := SmallInt((Word(AValue) shr 8) or (Word(AValue) shl 8));
   end;