aboutsummaryrefslogtreecommitdiff
path: root/src/rt
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt')
-rw-r--r--src/rt/rust_builtin.cpp9
-rw-r--r--src/rt/rustrt.def.in1
2 files changed, 10 insertions, 0 deletions
diff --git a/src/rt/rust_builtin.cpp b/src/rt/rust_builtin.cpp
index 5566835d..a2323898 100644
--- a/src/rt/rust_builtin.cpp
+++ b/src/rt/rust_builtin.cpp
@@ -178,6 +178,15 @@ vec_from_vbuf(rust_task *task, type_desc *ty, void *vbuf, size_t n_elts)
vbuf);
}
+extern "C" CDECL rust_vec*
+unsafe_vec_to_mut(rust_task *task, type_desc *ty, rust_vec *v)
+{
+ if (v->ref_count != CONST_REFCOUNT) {
+ v->ref();
+ }
+ return v;
+}
+
extern "C" CDECL rust_str*
str_alloc(rust_task *task, size_t n_bytes)
{
diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in
index e378fa8d..d30c146e 100644
--- a/src/rt/rustrt.def.in
+++ b/src/rt/rustrt.def.in
@@ -33,6 +33,7 @@ str_from_vec
str_push_byte
str_vec
task_sleep
+unsafe_vec_to_mut
unsupervise
upcall_clone_chan
upcall_del_chan