Skip to content
This repository has been archived by the owner on Jun 13, 2022. It is now read-only.

Commit

Permalink
fix build error with new store dependency and error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
matko committed Sep 7, 2020
1 parent c8237b8 commit df127e1
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 13 deletions.
10 changes: 8 additions & 2 deletions c/terminus_store.c
Original file line number Diff line number Diff line change
Expand Up @@ -496,9 +496,15 @@ static foreign_t pl_layer_parent(term_t layer_term, term_t parent_term) {
PL_fail;
}

void* parent = layer_parent(layer);
char* err;
void* parent = layer_parent(layer, &err);
if (parent == NULL) {
PL_fail;
if (err) {
return throw_rust_err(err);
}
else {
PL_fail;
}
}

PL_unify_blob(parent_term, parent, 0, &layer_blob_type);
Expand Down
14 changes: 7 additions & 7 deletions c/terminus_store.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ void builder_add_string_value_triple(void *builder,
char *object_ptr,
char **err);

void *builder_commit(void *builder, char **err);

void builder_apply_delta(void *builder, void *layer, char **err);

void *builder_commit(void *builder, char **err);

bool builder_committed(void *builder);

bool builder_remove_id_triple(void *builder,
Expand Down Expand Up @@ -204,9 +204,7 @@ void *layer_objects_iter(void *layer);

void *layer_open_write(void *layer, char **err);

void *layer_parent(void *layer);

void *layer_squash(void *layer, char **err);
void *layer_parent(void *layer, char **err);

void *layer_predicate_additions_iter(void *layer);

Expand All @@ -218,6 +216,8 @@ void *layer_predicate_removals_iter(void *layer);

void *layer_predicates_iter(void *layer);

void *layer_squash(void *layer, char **err);

bool layer_string_to_id(const char *name_ptr, uint32_t (*result)[5], char **err);

void *layer_subject_additions_iter(void *layer);
Expand All @@ -238,6 +238,8 @@ uintptr_t layer_triple_addition_count(void *layer);

uintptr_t layer_triple_removal_count(void *layer);

bool named_graph_force_set_head(void *named_graph, void *layer_ptr, char **err);

void *named_graph_get_head(void *named_graph, char **err);

char *named_graph_get_name(void *named_graph);
Expand All @@ -246,8 +248,6 @@ void *named_graph_open_write(void *named_graph, char **err);

bool named_graph_set_head(void *named_graph, void *layer_ptr, char **err);

bool named_graph_force_set_head(void *named_graph, void *layer_ptr, char **err);

bool object_lookup_lookup_subject_predicate_pair(void *object_lookup,
uint64_t subject,
uint64_t predicate);
Expand Down
2 changes: 1 addition & 1 deletion rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ name = "terminus_store_prolog"
crate-type = ["cdylib"]

[dependencies]
terminus-store = "0.11.5"
terminus-store = "0.11.6"
11 changes: 8 additions & 3 deletions rust/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -388,10 +388,15 @@ pub unsafe extern "C" fn builder_apply_delta(
}

#[no_mangle]
pub unsafe extern "C" fn layer_parent(layer: *mut SyncStoreLayer) -> *mut SyncStoreLayer {
pub unsafe extern "C" fn layer_parent(layer: *mut SyncStoreLayer, err: *mut *mut c_char) -> *mut SyncStoreLayer {
*err = std::ptr::null_mut();
match (*layer).parent() {
Some(parent) => Box::into_raw(Box::new(parent)),
None => std::ptr::null_mut(),
Ok(Some(parent)) => Box::into_raw(Box::new(parent)),
Ok(None) => std::ptr::null_mut(),
Err(e) => {
*err = error_to_cstring(e).into_raw();
std::ptr::null_mut()
}
}
}

Expand Down

0 comments on commit df127e1

Please sign in to comment.