diff --git a/build.sbt b/build.sbt index 70725d5..aacea09 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ import scala.collection.mutable.ArrayBuffer import scala.util.Try import scala.sys.process._ -val jnaVersion = "5.12.0" +val jnaVersion = "5.19.0" val jna = "net.java.dev.jna" % "jna" % jnaVersion val jnaPlatform = "net.java.dev.jna" % "jna-platform" % jnaVersion @@ -105,13 +105,18 @@ buildWin32X86_64 / skip := { }, _.isEmpty) } Test / fork := true +Test / javaOptions ++= { + import scala.util.Properties + if (Properties.isJavaAtLeast("11")) Seq("--enable-native-access=ALL-UNNAMED") + else Nil +} Test / testGrouping := { val tests = (Test / definedTests).value tests .groupBy(_.name) .map { case (name, tests) => - val options = ForkOptions() + val options = (Test / forkOptions).value new Tests.Group(name, tests, Tests.SubProcess(options)) } .toSeq diff --git a/src/main/java/org/scalasbt/ipcsocket/UnixDomainSocketLibrary.java b/src/main/java/org/scalasbt/ipcsocket/UnixDomainSocketLibrary.java index 54f714f..c5532cc 100644 --- a/src/main/java/org/scalasbt/ipcsocket/UnixDomainSocketLibrary.java +++ b/src/main/java/org/scalasbt/ipcsocket/UnixDomainSocketLibrary.java @@ -262,7 +262,14 @@ public int available(int fd) throws NativeErrorException { } else { op = UnixDomainSocketLibrary.FIONREAD; } - UnixDomainSocketLibrary.ioctl(fd, op, len); + final int r = UnixDomainSocketLibrary.ioctl(fd, op, len); + if (r != 0) { + if (pollRead(fd, 0)) { + return 1; + } else { + return 0; + } + } return len.getValue(); } catch (final LastErrorException e) { if (pollRead(fd, 0)) {