diff options
| author | Eric Holk <eholk@mozilla.com> | 2011-06-20 13:46:44 -0700 |
|---|---|---|
| committer | Eric Holk <eholk@mozilla.com> | 2011-06-20 13:47:02 -0700 |
| commit | a2dcd08cc273bcc880fc9687bffc98796fa1f3c4 (patch) | |
| tree | f794a78f7e6723995ed983e779ee9cbbbd896ad4 /src/rt | |
| parent | c0515017842a4b7872ff31bd91acec4a54d2ef2d (diff) | |
| download | rust-a2dcd08cc273bcc880fc9687bffc98796fa1f3c4.tar.gz rust-a2dcd08cc273bcc880fc9687bffc98796fa1f3c4.zip | |
Added string duplication to deep_copy. Closes #520.
Diffstat (limited to 'src/rt')
| -rw-r--r-- | src/rt/rust_upcall.cpp | 18 | ||||
| -rw-r--r-- | src/rt/rustrt.def.in | 1 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/rt/rust_upcall.cpp b/src/rt/rust_upcall.cpp index 1a0d4f8c0b0..7fb6bc4c84d 100644 --- a/src/rt/rust_upcall.cpp +++ b/src/rt/rust_upcall.cpp @@ -315,9 +315,7 @@ upcall_mark(rust_task *task, void* ptr) { return 0; } -extern "C" CDECL rust_str * -upcall_new_str(rust_task *task, char const *s, size_t fill) { - LOG_UPCALL_ENTRY(task); +rust_str *make_str(rust_task *task, char const *s, size_t fill) { rust_dom *dom = task->dom; size_t alloc = next_power_of_two(sizeof(rust_str) + fill); void *mem = task->malloc(alloc); @@ -332,6 +330,20 @@ upcall_new_str(rust_task *task, char const *s, size_t fill) { return st; } +extern "C" CDECL rust_str * +upcall_new_str(rust_task *task, char const *s, size_t fill) { + LOG_UPCALL_ENTRY(task); + + return make_str(task, s, fill); +} + +extern "C" CDECL rust_str * +upcall_dup_str(rust_task *task, rust_str *str) { + LOG_UPCALL_ENTRY(task); + + return make_str(task, (char const *)str->data, str->fill); +} + extern "C" CDECL rust_vec * upcall_new_vec(rust_task *task, size_t fill, type_desc *td) { LOG_UPCALL_ENTRY(task); diff --git a/src/rt/rustrt.def.in b/src/rt/rustrt.def.in index b47d18e780e..17b4ba9817d 100644 --- a/src/rt/rustrt.def.in +++ b/src/rt/rustrt.def.in @@ -47,6 +47,7 @@ unsupervise upcall_clone_chan upcall_del_chan upcall_del_port +upcall_dup_str upcall_exit upcall_fail upcall_flush_chan |
