Skip to content

Commit a743b53

Browse files
committed
Fix for a "file handler" leak in native openPort method.
This bug leads to VM crashes (at least on Linux) when the number of "leaked" handlers goes over 1024 and a select is made on one of them (for example during readBytes).
1 parent b61c224 commit a743b53

File tree

2 files changed

+2
-0
lines changed

2 files changed

+2
-0
lines changed

src/cpp/_nix_based/jssc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ JNIEXPORT jlong JNICALL Java_jssc_SerialNativeInterface_openPort(JNIEnv *env, jo
7272
fcntl(hComm, F_SETFL, flags);
7373
}
7474
else {
75+
close(hComm);
7576
hComm = jssc_SerialNativeInterface_ERR_INCORRECT_SERIAL_PORT;//-4;
7677
}
7778
delete settings;

src/cpp/windows/jssc.c++

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ JNIEXPORT jlong JNICALL Java_jssc_SerialNativeInterface_openPort(JNIEnv *env, jo
5757
if(hComm != INVALID_HANDLE_VALUE){
5858
DCB *dcb = new DCB();
5959
if(!GetCommState(hComm, dcb)){
60+
CloseHandle(hComm);
6061
hComm = (HANDLE)jssc_SerialNativeInterface_ERR_INCORRECT_SERIAL_PORT;//(-4)Incorrect serial port
6162
}
6263
delete dcb;

0 commit comments

Comments
 (0)