summaryrefslogtreecommitdiff
path: root/gcc/ada/g-sercom-linux.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 09:31:28 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-30 09:31:28 +0000
commitbd908a9c3d73c964dd5311ca70baf1d62c83168e (patch)
tree9a67a2e2419bf357e4dd63ff87001bddf3abf00f /gcc/ada/g-sercom-linux.adb
parentf815785447ca40b7a70d7c7dff311f9b14e0e22a (diff)
downloadgcc-bd908a9c3d73c964dd5311ca70baf1d62c83168e.tar.gz
2009-11-30 Thomas Quinot <quinot@adacore.com>
* s-commun.adb, s-commun.ads: New internal support unit, allowing code sharing between GNAT.Sockets and GNAT.Serial_Communication. * g-sercom.ads, g-sercom-mingw.adb, g-sercom-linux.adb, g-socket.adb (GNAT.Sockets.Last_Index): Move to System.Communication. (GNAT.Serial_Communication.Read): Handle correctly the case where no data was read, and Buffer'First = Stream_Element_Offset'First. * Makefile.rtl: Add entry for s-commun * g-socthi-vms.adb, g-socthi-vms.ads, g-socthi-vxworks.adb, g-socthi-vxworks.ads, g-stseme.adb, g-socthi-mingw.ads, g-socthi.adb, g-socthi.ads (GNAT.Sockets.Thin.Socket_Error_Message): Reimplement in terms of System.CRTL.strerror. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154758 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/g-sercom-linux.adb')
-rw-r--r--gcc/ada/g-sercom-linux.adb11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/ada/g-sercom-linux.adb b/gcc/ada/g-sercom-linux.adb
index 1be595a2f63..c25d5e8e44a 100644
--- a/gcc/ada/g-sercom-linux.adb
+++ b/gcc/ada/g-sercom-linux.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2007-2008, AdaCore --
+-- Copyright (C) 2007-2009, AdaCore --
-- --
-- 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- --
@@ -37,7 +37,9 @@ with Ada.Streams; use Ada.Streams;
with Ada; use Ada;
with Ada.Unchecked_Deallocation;
-with System.CRTL; use System, System.CRTL;
+with System; use System;
+with System.Communication; use System.Communication;
+with System.CRTL; use System.CRTL;
with GNAT.OS_Lib; use GNAT.OS_Lib;
@@ -167,11 +169,10 @@ package body GNAT.Serial_Communications is
Res := read (Integer (Port.H.all), Buffer'Address, Len);
if Res = -1 then
- Last := 0;
Raise_Error ("read failed");
- else
- Last := Buffer'First + Stream_Element_Offset (Res) - 1;
end if;
+
+ Last := Last_Index (Buffer'First, C.int (Res));
end Read;
---------