diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 58b35d1a7..de9238263 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-bin.zip diff --git a/src/os/unix/lib.rs b/src/os/unix/lib.rs index d050e45ec..173c03e3a 100755 --- a/src/os/unix/lib.rs +++ b/src/os/unix/lib.rs @@ -3,6 +3,7 @@ use os::unix::external; use os::unix::OkOrDlerror; use os::unix::RTLD_LAZY; use util; +use std::ffi::CString; use std::mem; use std::path::Path; use std::os::raw::c_char; @@ -16,15 +17,13 @@ pub struct Lib { impl Lib { pub unsafe fn new(path_to_lib: TPath) -> Result where TPath: AsRef { - let path_to_lib_str = - path_to_lib - .as_ref() - .to_string_lossy(); - let path_to_lib_c_str = path_to_lib_str.as_ptr() as *const c_char; + let path_to_lib_c_str = CString::new(path_to_lib.as_ref().to_string_lossy().as_ref()) + .chain_err( || ErrorKind::LibraryOpen(path_to_lib.as_ref().to_path_buf()))?; + let path_to_lib_c_ptr = path_to_lib_c_str.as_ptr(); util::error_guard( || { - let result = external::dlopen(path_to_lib_c_str, RTLD_LAZY); + let result = external::dlopen(path_to_lib_c_ptr, RTLD_LAZY); if result.is_null() { None diff --git a/test/examplelib/build.gradle b/test/examplelib/build.gradle index 18c727d03..eea683dd5 100644 --- a/test/examplelib/build.gradle +++ b/test/examplelib/build.gradle @@ -3,7 +3,7 @@ rsFiles.include "**/*.rs" task cargoBuild(type: Exec) { commandLine "cargo", "build" - inputs.file(rsFiles) + inputs.files(rsFiles) outputs.file("target/debug/examplelib.dll") }