mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Revert "stream_wrap: reference handle before uv_write2"
It's segfaulting in release mode and asserting in debug mode:
#
# Fatal error in ../../deps/v8/src/api.h, line 297
# CHECK(allow_empty_handle || that != __null) failed
#
This reverts commit 99f0b022d5.
This commit is contained in:
@@ -77,7 +77,6 @@ static Persistent<String> bytes_sym;
|
||||
static Persistent<String> write_queue_size_sym;
|
||||
static Persistent<String> onread_sym;
|
||||
static Persistent<String> oncomplete_sym;
|
||||
static Persistent<String> handle_sym;
|
||||
static SlabAllocator* slab_allocator;
|
||||
static bool initialized;
|
||||
|
||||
@@ -412,13 +411,6 @@ Handle<Value> StreamWrap::WriteStringImpl(const Arguments& args) {
|
||||
StreamWrap* send_stream_wrap = static_cast<StreamWrap*>(
|
||||
send_stream_obj->GetAlignedPointerFromInternalField(0));
|
||||
send_stream = send_stream_wrap->GetStream();
|
||||
|
||||
// Reference StreamWrap instance to prevent it from being garbage
|
||||
// collected before `AfterWrite` is called.
|
||||
if (handle_sym.IsEmpty()) {
|
||||
handle_sym = NODE_PSYMBOL("handle");
|
||||
}
|
||||
req_wrap->object_->Set(handle_sym, send_stream_obj);
|
||||
}
|
||||
|
||||
r = uv_write2(&req_wrap->req_,
|
||||
@@ -476,9 +468,6 @@ void StreamWrap::AfterWrite(uv_write_t* req, int status) {
|
||||
assert(req_wrap->object_.IsEmpty() == false);
|
||||
assert(wrap->object_.IsEmpty() == false);
|
||||
|
||||
// Unref handle property
|
||||
req_wrap->object_->Delete(handle_sym);
|
||||
|
||||
if (status) {
|
||||
SetErrno(uv_last_error(uv_default_loop()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user