[Ada] Fix incorrect binding to MapViewOfFile in s-win32.ads
authorOlivier Hainque <hainque@adacore.com>
Tue, 13 Aug 2019 08:07:08 +0000 (08:07 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 13 Aug 2019 08:07:08 +0000 (08:07 +0000)
Despite the "dw" prefix on the name, the dwNumberOfBytesToMap argument
to MapViewOfFile was changed from DWORD to SIZE_T when 64bit Windows
came about.

This change adjusts the binding we have for it in System.Win32
accordingly. For consistency with established practice, an s-win32
specific version of size_t is introduced and g-sercom__mingw.adb is
adjusted to disambiguate between this new size_t and the one already
exposed in System.CRTL.

2019-08-13  Olivier Hainque  <hainque@adacore.com>

gcc/ada/

* libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
binding to use it instead of DWORD for the dwNumberOfBytesToMap
argument.
* libgnat/g-sercom__mingw.adb (Read): State which definition of
size_t to fetch in call to Last_Index.

From-SVN: r274341

gcc/ada/ChangeLog
gcc/ada/libgnat/g-sercom__mingw.adb
gcc/ada/libgnat/s-win32.ads

index a67cc5d5b7796e44348fcbe93fbd9aa56e32ff4a..75d3d7bee1e4036249bed468b32ee2c13f58419c 100644 (file)
@@ -1,3 +1,11 @@
+2019-08-13  Olivier Hainque  <hainque@adacore.com>
+
+       * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile
+       binding to use it instead of DWORD for the dwNumberOfBytesToMap
+       argument.
+       * libgnat/g-sercom__mingw.adb (Read): State which definition of
+       size_t to fetch in call to Last_Index.
+
 2019-08-13  Arnaud Charlet  <charlet@adacore.com>
 
        * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass
index c13e7b3bba8a5eb46c2ced5e753ac075f189700e..d5e2344524f4defe20bf63c19b0d49393a783315 100644 (file)
@@ -167,7 +167,7 @@ package body GNAT.Serial_Communications is
          Raise_Error ("read error");
       end if;
 
-      Last := Last_Index (Buffer'First, size_t (Read_Last));
+      Last := Last_Index (Buffer'First, CRTL.size_t (Read_Last));
    end Read;
 
    ---------
index d09c4b32cb60f963ca5bd435290efa396e6d2ba2..ab832cdf89cda253d72b3b20f4fb7816395dba72 100644 (file)
@@ -63,6 +63,7 @@ package System.Win32 is
    type BYTE   is new Interfaces.C.unsigned_char;
    type LONG   is new Interfaces.C.long;
    type CHAR   is new Interfaces.C.char;
+   type SIZE_T is new Interfaces.C.size_t;
 
    type BOOL   is new Interfaces.C.int;
    for BOOL'Size use Interfaces.C.int'Size;
@@ -238,7 +239,7 @@ package System.Win32 is
       dwDesiredAccess      : DWORD;
       dwFileOffsetHigh     : DWORD;
       dwFileOffsetLow      : DWORD;
-      dwNumberOfBytesToMap : DWORD) return System.Address;
+      dwNumberOfBytesToMap : SIZE_T) return System.Address;
    pragma Import (Stdcall, MapViewOfFile, "MapViewOfFile");
 
    function UnmapViewOfFile (lpBaseAddress : System.Address) return BOOL;