about summary refs log tree commit diff
path: root/src/rt/rust_uv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_uv.cpp')
-rw-r--r--src/rt/rust_uv.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/rt/rust_uv.cpp b/src/rt/rust_uv.cpp
index 2a575bd00e3..4735abdedcd 100644
--- a/src/rt/rust_uv.cpp
+++ b/src/rt/rust_uv.cpp
@@ -234,9 +234,22 @@ rust_uv_get_stream_handle_for_connect(uv_connect_t* connect) {
   return connect->handle;
 }
 
-extern "C" uv_buf_t
+static uv_buf_t
+current_kernel_malloc_alloc_cb(uv_handle_t* handle,
+							   size_t suggested_size) {
+  char* base_ptr = (char*)current_kernel_malloc(sizeof(char)
+											* suggested_size,
+										 "uv_buf_t_base_val");
+  return uv_buf_init(base_ptr, suggested_size);
+}
+
+// FIXME see issue #1402
+extern "C" void*
 rust_uv_buf_init(char* base, size_t len) {
-  return uv_buf_init(base, len);
+  uv_buf_t* buf_ptr = current_kernel_malloc(sizeof(uv_buf_t),
+											"uv_buf_t_1402");
+  *buf_ptr = uv_buf_init(base, len);
+  return buf_ptr;
 }
 
 extern "C" uv_loop_t*