mirror of https://github.com/hannobraun/Fornjot
Merge pull request #1304 from hannobraun/version
Fix panic on Windows when loading model version
This commit is contained in:
commit
eae922bdde
|
@ -108,15 +108,13 @@ impl Model {
|
|||
let version_pkg: libloading::Symbol<fn() -> RawVersion> =
|
||||
lib.get(b"version_pkg").map_err(Error::LoadingVersion)?;
|
||||
|
||||
let version_pkg = version_pkg();
|
||||
if fj::version::VERSION_PKG != version_pkg.as_str() {
|
||||
let version_pkg = version_pkg().to_string();
|
||||
if fj::version::VERSION_PKG != version_pkg {
|
||||
let host = String::from_utf8_lossy(
|
||||
fj::version::VERSION_PKG.as_bytes(),
|
||||
)
|
||||
.into_owned();
|
||||
let model =
|
||||
String::from_utf8_lossy(version_pkg.as_str().as_bytes())
|
||||
.into_owned();
|
||||
let model = version_pkg;
|
||||
|
||||
return Err(Error::VersionMismatch { host, model });
|
||||
}
|
||||
|
@ -124,15 +122,13 @@ impl Model {
|
|||
let version_full: libloading::Symbol<fn() -> RawVersion> =
|
||||
lib.get(b"version_full").map_err(Error::LoadingVersion)?;
|
||||
|
||||
let version_full = version_full();
|
||||
if fj::version::VERSION_FULL != version_full.as_str() {
|
||||
let version_full = version_full().to_string();
|
||||
if fj::version::VERSION_FULL != version_full {
|
||||
let host = String::from_utf8_lossy(
|
||||
fj::version::VERSION_FULL.as_bytes(),
|
||||
)
|
||||
.into_owned();
|
||||
let model =
|
||||
String::from_utf8_lossy(version_full.as_str().as_bytes())
|
||||
.into_owned();
|
||||
let model = version_full;
|
||||
|
||||
warn!("{}", Error::VersionMismatch { host, model });
|
||||
}
|
||||
|
|
|
@ -102,19 +102,7 @@ pub fn run(
|
|||
}
|
||||
|
||||
ModelEvent::Error(err) => {
|
||||
// Can be cleaned up, once `Report` is stable:
|
||||
// https://doc.rust-lang.org/std/error/struct.Report.html
|
||||
|
||||
println!("Error receiving updated shape: {}", err);
|
||||
|
||||
let mut current_err = &err as &dyn error::Error;
|
||||
while let Some(err) = current_err.source() {
|
||||
println!();
|
||||
println!("Caused by:");
|
||||
println!(" {}", err);
|
||||
|
||||
current_err = err;
|
||||
}
|
||||
status.update_status(&err.to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,9 +39,10 @@ impl RawVersion {
|
|||
///
|
||||
/// Must be a `RawVersion` returned from one of the hidden version functions
|
||||
/// in this module.
|
||||
pub unsafe fn as_str(&self) -> &str {
|
||||
#[allow(clippy::inherent_to_string)]
|
||||
pub unsafe fn to_string(&self) -> String {
|
||||
let slice = slice::from_raw_parts(self.ptr, self.len);
|
||||
std::str::from_utf8(slice).unwrap()
|
||||
String::from_utf8_lossy(slice).into_owned()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue