diff options
| author | Jeff Olson <olson.jeffery@gmail.com> | 2012-03-21 08:56:05 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-04-06 15:35:48 -0700 |
| commit | af08aba5736aacae6662a2ac586bb559f0704cdc (patch) | |
| tree | 7aba98465ba24a42cfb0cd5ce54aeed1f3a3dadd /src | |
| parent | 3817ba7578a5044a5572f35de367b6ca31a35bc0 (diff) | |
some more stuff for libuv dealing w/ 1402.. should go away soon
Diffstat (limited to 'src')
| -rw-r--r-- | src/libstd/uv.rs | 15 | ||||
| -rw-r--r-- | src/rt/rust_uv.cpp | 17 |
2 files changed, 22 insertions, 10 deletions
diff --git a/src/libstd/uv.rs b/src/libstd/uv.rs index 67508df4916..c280caf0372 100644 --- a/src/libstd/uv.rs +++ b/src/libstd/uv.rs @@ -273,7 +273,7 @@ native mod rustrt { loop_handle: *ctypes::void, handle_ptr: *uv_tcp_t) -> ctypes::c_int; fn rust_uv_buf_init(base: *u8, len: ctypes::size_t) - -> uv_buf_t; + -> *ctypes::void; fn rust_uv_last_error(loop_handle: *ctypes::void) -> uv_err_t; fn rust_uv_ip4_addr(ip: *u8, port: ctypes::c_int) -> *ctypes::void; @@ -352,10 +352,6 @@ mod direct { unsafe fn write_t() -> uv_write_t { ret gen_stub_uv_write_t(); } - // FIXME: see github issue #1402 - unsafe fn buf_init(input: *u8, len: uint) -> *ctypes::void { - ret rustrt::rust_uv_buf_init(input, len); - } unsafe fn get_loop_for_uv_handle(handle: *ctypes::void) -> *ctypes::void { ret rustrt::rust_uv_get_loop_for_uv_handle(handle); @@ -373,6 +369,10 @@ mod direct { rustrt::rust_uv_set_data_for_req(req, data); } // FIXME: see github issue #1402 + unsafe fn buf_init(input: *u8, len: uint) -> *ctypes::void { + ret rustrt::rust_uv_buf_init(input, len); + } + // FIXME: see github issue #1402 unsafe fn ip4_addr(ip: str, port: ctypes::c_int) -> *ctypes::void { let addr_vec = str::bytes(ip); @@ -382,10 +382,9 @@ mod direct { io::println(#fmt("vec val: '%s' length: %u",ip_back, vec::len(addr_vec))); ret rustrt::rust_uv_ip4_addr(addr_vec_ptr, port); } - // this is lame. // FIXME: see github issue #1402 - unsafe fn ip4_addr_free(ptr: *ctypes::void) { + unsafe fn free_1402(ptr: *ctypes::void) { rustrt::rust_uv_free(ptr); } } @@ -1033,7 +1032,7 @@ fn impl_uv_tcp_request() unsafe { direct::run(test_loop); io::println("after run tcp req loop"); // FIXME: see github issue #1402 - direct::ip4_addr_free(addr); + direct::free_1402(addr); } else { io::println("direct::tcp_connect() failure"); 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* |
