diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java index 6883c1cf3494e3d5afbaa320727498fa4b0a862c..2e5366f96c062c017a51c81dea19bc39bc909dea 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java @@ -277,6 +277,9 @@ public class DLL { initCritical.acquire(); try { RFFIFactory.getRFFI().getCallRFFI().invokeVoidCall(symbolInfo.address, symbolInfo.symbol, new Object[]{dllInfo}); + } catch (ReturnException ex) { + // An error call can, due to condition handling, throw this which we must propogate + throw ex; } catch (Throwable ex) { if (RContext.isInitialContextInitialized()) { throw new DLLException(RError.Message.DLL_RINIT_ERROR);