From d937c6e44ba64694c0fc88f40f42390149d1d624 Mon Sep 17 00:00:00 2001 From: Pascal Obry Date: Thu, 24 Mar 2022 11:30:05 +0100 Subject: [PATCH] Properly reset the port handle when closing When the serial port is closed, we need to ensure that the port handle is properly reset for it to be detected as closed. gcc/ada/ PR ada/104767 * libgnat/g-sercom__mingw.adb (Close): Reset port handle to -1. * libgnat/g-sercom__linux.adb (Close): Likewise. --- gcc/ada/libgnat/g-sercom__linux.adb | 1 + gcc/ada/libgnat/g-sercom__mingw.adb | 1 + 2 files changed, 2 insertions(+) diff --git a/gcc/ada/libgnat/g-sercom__linux.adb b/gcc/ada/libgnat/g-sercom__linux.adb index a2a64b1c17f2..73bbb69300e3 100644 --- a/gcc/ada/libgnat/g-sercom__linux.adb +++ b/gcc/ada/libgnat/g-sercom__linux.adb @@ -382,6 +382,7 @@ package body GNAT.Serial_Communications is begin if Port.H /= -1 then Res := close (int (Port.H)); + Port.H := -1; end if; end Close; diff --git a/gcc/ada/libgnat/g-sercom__mingw.adb b/gcc/ada/libgnat/g-sercom__mingw.adb index aea78aead8cb..d3301bd045be 100644 --- a/gcc/ada/libgnat/g-sercom__mingw.adb +++ b/gcc/ada/libgnat/g-sercom__mingw.adb @@ -70,6 +70,7 @@ package body GNAT.Serial_Communications is begin if Port.H /= -1 then Success := CloseHandle (HANDLE (Port.H)); + Port.H := -1; if Success = Win32.FALSE then Raise_Error ("error closing the port"); -- 2.47.2