| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 5b5e07a commit ec3e5b4
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -321,7 +321,8 @@ class Reference : public RefBase { | |||
| 321 | 321 | Reference(napi_env env, v8::Local<v8::Value> value, Args&&... args) | |
| 322 | 322 | : RefBase(env, std::forward<Args>(args)...), | |
| 323 | 323 | _persistent(env->isolate, value), | |
| 324 | - _secondPassParameter(new SecondPassCallParameterRef(this)) { | ||
| 324 | + _secondPassParameter(new SecondPassCallParameterRef(this)), | ||
| 325 | + _secondPassScheduled(false) { | ||
| 325 | 326 | if (RefCount() == 0) { | |
| 326 | 327 | SetWeak(); | |
| 327 | 328 | } | |
@@ -348,7 +349,7 @@ class Reference : public RefBase { | |||
| 348 | 349 | // If the second pass callback is scheduled, it will delete the | |
| 349 | 350 | // parameter passed to it, otherwise it will never be scheduled | |
| 350 | 351 | // and we need to delete it here. | |
| 351 | - if (_secondPassParameter != nullptr) { | ||
| 352 | + if (!_secondPassScheduled) { | ||
| 352 | 353 | delete _secondPassParameter; | |
| 353 | 354 | } | |
| 354 | 355 | } | |
@@ -445,8 +446,7 @@ class Reference : public RefBase { | |||
| 445 | 446 | reference->_persistent.Reset(); | |
| 446 | 447 | // Mark the parameter not delete-able until the second pass callback is | |
| 447 | 448 | // invoked. | |
| 448 | - reference->_secondPassParameter = nullptr; | ||
| 449 | - | ||
| 449 | + reference->_secondPassScheduled = true; | ||
| 450 | 450 | data.SetSecondPassCallback(SecondPassCallback); | |
| 451 | 451 | } | |
| 452 | 452 | ||
@@ -468,12 +468,14 @@ class Reference : public RefBase { | |||
| 468 | 468 | // the reference itself has already been deleted so nothing to do | |
| 469 | 469 | return; | |
| 470 | 470 | } | |
| 471 | + reference->_secondPassParameter = nullptr; | ||
| 471 | 472 | reference->Finalize(); | |
| 472 | 473 | } | |
| 473 | 474 | ||
| 474 | 475 | bool env_teardown_finalize_started_ = false; | |
| 475 | 476 | v8impl::Persistent<v8::Value> _persistent; | |
| 476 | 477 | SecondPassCallParameterRef* _secondPassParameter; | |
| 478 | + bool _secondPassScheduled; | ||
| 477 | 479 | }; | |
| 478 | 480 | ||
| 479 | 481 | enum UnwrapAction { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments