summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ffi/lib.rs8
-rw-r--r--test_ffi/tests/integration_tests.rs1
-rw-r--r--test_ffi/tests/test.js8
3 files changed, 15 insertions, 2 deletions
diff --git a/ext/ffi/lib.rs b/ext/ffi/lib.rs
index b5505fb0c..d2b0d24df 100644
--- a/ext/ffi/lib.rs
+++ b/ext/ffi/lib.rs
@@ -1,6 +1,5 @@
// Copyright 2021 the Deno authors. All rights reserved. MIT license.
-use deno_core::error::anyhow;
use deno_core::error::bad_resource_id;
use deno_core::error::AnyError;
use deno_core::include_js_files;
@@ -370,7 +369,12 @@ where
let permissions = state.borrow_mut::<FP>();
permissions.check(&path)?;
- let lib = Library::open(&path).map_err(|e| anyhow!(format_error(e, path)))?;
+ let lib = Library::open(&path).map_err(|e| {
+ dlopen::Error::OpeningLibraryError(std::io::Error::new(
+ std::io::ErrorKind::Other,
+ format_error(e, path),
+ ))
+ })?;
let mut resource = DynamicLibraryResource {
lib,
diff --git a/test_ffi/tests/integration_tests.rs b/test_ffi/tests/integration_tests.rs
index 0ae395da8..28176f187 100644
--- a/test_ffi/tests/integration_tests.rs
+++ b/test_ffi/tests/integration_tests.rs
@@ -37,6 +37,7 @@ fn basic() {
println!("{:?}", output.status);
assert!(output.status.success());
let expected = "\
+ dlopen doesn't panic\n\
something\n\
[1, 2, 3, 4, 5, 6, 7, 8]\n\
579\n\
diff --git a/test_ffi/tests/test.js b/test_ffi/tests/test.js
index fc354139d..098541265 100644
--- a/test_ffi/tests/test.js
+++ b/test_ffi/tests/test.js
@@ -10,6 +10,14 @@ const [libPrefix, libSuffix] = {
const libPath = `${targetDir}/${libPrefix}test_ffi.${libSuffix}`;
const resourcesPre = Deno.resources();
+
+// dlopen shouldn't panic
+try {
+ Deno.dlopen("cli/src/main.rs", {});
+} catch (_) {
+ console.log("dlopen doesn't panic");
+}
+
const dylib = Deno.dlopen(libPath, {
"print_something": { parameters: [], result: "void" },
"print_buffer": { parameters: ["buffer", "usize"], result: "void" },