Merge branch 'master' into doc-runtime-c-api

# Conflicts:
#	lib/runtime-c-api/src/lib.rs
This commit is contained in:
Syrus
2019-05-13 15:55:20 -07:00
209 changed files with 13983 additions and 8965 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "wasmer-runtime-c-api"
version = "0.2.1"
version = "0.4.1"
description = "Wasmer C API library"
license = "MIT"
authors = ["The Wasmer Engineering Team <engineering@wasmer.io>"]
@ -16,15 +16,15 @@ libc = "0.2"
[dependencies.wasmer-runtime]
path = "../runtime"
version = "0.2.1"
version = "0.4.1"
[dependencies.wasmer-runtime-core]
path = "../runtime-core"
version = "0.2.1"
version = "0.4.1"
[features]
debug = ["wasmer-runtime/debug"]
llvm = ["wasmer-runtime/llvm"]
[build-dependencies]
cbindgen = "0.8"
cbindgen = "0.8"

View File

@ -61,20 +61,20 @@ pub unsafe extern "C" fn wasmer_last_error_message(buffer: *mut c_char, length:
return -1;
}
let last_error = match take_last_error() {
Some(err) => err,
let error_message = match take_last_error() {
Some(err) => err.to_string(),
None => return 0,
};
let error_message = last_error.to_string();
let length = length as usize;
let buffer = slice::from_raw_parts_mut(buffer as *mut u8, length as usize);
if error_message.len() >= buffer.len() {
// buffer to small for err message
if error_message.len() >= length {
// buffer is too small to hold the error message
return -1;
}
let buffer = slice::from_raw_parts_mut(buffer as *mut u8, length);
ptr::copy_nonoverlapping(
error_message.as_ptr(),
buffer.as_mut_ptr(),
@ -85,7 +85,7 @@ pub unsafe extern "C" fn wasmer_last_error_message(buffer: *mut c_char, length:
// accidentally read into garbage.
buffer[error_message.len()] = 0;
error_message.len() as c_int
error_message.len() as c_int + 1
}
#[derive(Debug)]

View File

@ -80,6 +80,7 @@
//!
//! [wasmer_h]: ./wasmer.h
//! [wasmer_hh]: ./wasmer.hh
#![deny(unused_imports, unused_variables, unused_unsafe, unreachable_patterns)]
extern crate wasmer_runtime;
extern crate wasmer_runtime_core;

View File

@ -46,7 +46,8 @@ int main()
int error_len = wasmer_last_error_length();
printf("Error len: `%d`\n", error_len);
char *error_str = malloc(error_len);
wasmer_last_error_message(error_str, error_len);
int error_result = wasmer_last_error_message(error_str, error_len);
assert(error_len == error_result);
printf("Error str: `%s`\n", error_str);
assert(0 == strcmp(error_str, "Call error: Parameters of type [I32] did not match signature [I32, I32] -> [I32]"));
free(error_str);