s-stoele.adb: Fix code for Address mod Storage_Offset for negative offset values

2005-11-14  Robert Dewar  <dewar@adacore.com>

	* s-stoele.adb: Fix code for Address mod Storage_Offset for negative
	offset values

From-SVN: r107010
This commit is contained in:
Robert Dewar 2005-11-15 15:04:45 +01:00 committed by Arnaud Charlet
parent 5e804c9fcd
commit 49c041e306
1 changed files with 6 additions and 4 deletions

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2004 Free Software Foundation, Inc. --
-- Copyright (C) 1992-2005, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -61,15 +61,17 @@ package body System.Storage_Elements is
return To_Offset (To_Address (To_Integer (Left) - To_Integer (Right)));
end "-";
function "mod" (Left : Address; Right : Storage_Offset)
return Storage_Offset is
function "mod"
(Left : Address;
Right : Storage_Offset) return Storage_Offset
is
begin
if Right >= 0 then
return Storage_Offset
(To_Integer (Left) mod Integer_Address (Right));
else
return -Storage_Offset
(To_Integer (Left) mod Integer_Address (-Right));
((-To_Integer (Left)) mod Integer_Address (-Right));
end if;
end "mod";