ClearWeak on ObjectWraps. I /think/ this is the correct semantics

This commit is contained in:
Ryan Dahl 2010-10-04 12:52:46 -07:00
Родитель 8ff7954165
Коммит dbf0d6bb70
1 изменённых файлов: 3 добавлений и 1 удалений

Просмотреть файл

@ -16,6 +16,7 @@ class ObjectWrap {
virtual ~ObjectWrap ( ) {
if (!handle_.IsEmpty()) {
assert(handle_.IsNearDeath());
handle_.ClearWeak();
handle_->SetInternalField(0, v8::Undefined());
handle_.Dispose();
handle_.Clear();
@ -82,7 +83,8 @@ class ObjectWrap {
ObjectWrap *obj = static_cast<ObjectWrap*>(data);
assert(value == obj->handle_);
assert(!obj->refs_);
if (value.IsNearDeath()) delete obj;
assert(value.IsNearDeath());
delete obj;
}
};