diff options
| author | Jeff Olson <olson.jeffery@gmail.com> | 2012-02-24 17:43:31 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-28 17:56:15 -0800 |
| commit | 0b3a06ab2ca989ab0f0b9fa5fa8aa83a2ec13998 (patch) | |
| tree | 0d5b1b38c8ab616f231884b253859a019de81c39 /src/rt/rust_uv.cpp | |
| parent | d461637cc5c896252003eda3e83084bcebb3717e (diff) | |
| download | rust-0b3a06ab2ca989ab0f0b9fa5fa8aa83a2ec13998.tar.gz rust-0b3a06ab2ca989ab0f0b9fa5fa8aa83a2ec13998.zip | |
correcting for libuv behavior that differs between linux & windows
net complexity increase :/
Diffstat (limited to 'src/rt/rust_uv.cpp')
| -rw-r--r-- | src/rt/rust_uv.cpp | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/src/rt/rust_uv.cpp b/src/rt/rust_uv.cpp index 03cd75d4805..4126896895e 100644 --- a/src/rt/rust_uv.cpp +++ b/src/rt/rust_uv.cpp @@ -68,10 +68,8 @@ native_close_cb(uv_handle_t* handle) { static void native_close_op_cb(uv_handle_t* op_handle) { - uv_loop_t* loop = op_handle->loop; current_kernel_free(op_handle); - loop->data = 0; // a ptr to some stack-allocated rust mem - uv_loop_delete(loop); + // uv_run() should return after this.. } // native fns bound in rust @@ -94,25 +92,13 @@ rust_uv_bind_op_cb(uv_loop_t* loop, crust_async_op_cb cb) { async->data = (void*)cb; // decrement the ref count, so that our async bind // doesn't count towards keeping the loop alive - uv_unref(loop); + //uv_unref(loop); return async; } extern "C" void rust_uv_stop_op_cb(uv_handle_t* op_handle) { - /* // this is a hack to get libuv to cleanup a - // handle that was made to not prevent the loop - // from exiting via uv_unref(). - uv_ref(op_handle->loop); uv_close(op_handle, native_close_op_cb); - uv_run(op_handle->loop); // this should process the handle's - // close event and then return - */ - // the above code is supposed to work to cleanly close - // a handler that was uv_unref()'d. but it causes much spew - // instead. this is the ugly/quick way to deal w/ it for now. - uv_close(op_handle, native_close_op_cb); - native_close_op_cb(op_handle); } extern "C" void |
