@@ -425,7 +425,7 @@ class TextBufferSearcher : public Nan::AsyncWorker {
425425 }
426426
427427 void HandleOKCallback () {
428- delete snapshot;
428+
429429 Local<Value> argv[] = {Nan::Null (), encode_ranges (matches)};
430430 callback->Call (2 , argv, async_resource);
431431 }
@@ -586,7 +586,8 @@ void TextBufferWrapper::find_words_with_subsequence_in_range(const Nan::Function
586586 void CancelIfQueued () {
587587 int lock_status = uv_rwlock_trywrlock (&snapshot_lock);
588588 if (lock_status == 0 ) {
589- delete snapshot;
589+
590+
590591 snapshot = nullptr ;
591592 uv_rwlock_wrunlock (&snapshot_lock);
592593 }
@@ -599,7 +600,7 @@ void TextBufferWrapper::find_words_with_subsequence_in_range(const Nan::Function
599600 return ;
600601 }
601602
602- delete snapshot;
603+
603604 auto text_buffer_wrapper = Nan::ObjectWrap::Unwrap<TextBufferWrapper>(Nan::New (buffer));
604605 text_buffer_wrapper->outstanding_workers .erase (this );
605606
@@ -730,7 +731,7 @@ class Loader {
730731 Nan::Callback *progress_callback;
731732 Nan::AsyncResource *async_resource;
732733 TextBuffer *buffer;
733- TextBuffer::Snapshot * snapshot;
734+ std::shared_ptr< TextBuffer::Snapshot> snapshot;
734735 string file_name;
735736 string encoding_name;
736737 optional<Text> loaded_text;
@@ -778,17 +779,17 @@ class Loader {
778779
779780 pair<Local<Value>, Local<Value>> Finish (Nan::AsyncResource* caller_async_resource = nullptr ) {
780781 if (error) {
781- delete snapshot;
782+
782783 return {error_to_js (*error, encoding_name, file_name), Nan::Undefined ()};
783784 }
784785
785786 if (cancelled || (!force && buffer->is_modified ())) {
786- delete snapshot;
787+
787788 return {Nan::Null (), Nan::Null ()};
788789 }
789790
790791 Patch inverted_changes = buffer->get_inverted_changes (snapshot);
791- delete snapshot;
792+
792793
793794 if (compute_patch && inverted_changes.get_change_count () > 0 ) {
794795 inverted_changes.combine (patch);
@@ -1004,7 +1005,7 @@ class BaseTextComparisonWorker : public Nan::AsyncWorker {
10041005 }
10051006
10061007 void HandleOKCallback () {
1007- delete snapshot;
1008+
10081009 if (error) {
10091010 Local<Value> argv[] = {error_to_js (*error, encoding_name, file_name)};
10101011 callback->Call (1 , argv, async_resource);
@@ -1090,11 +1091,11 @@ class SaveWorker : public Nan::AsyncWorker {
10901091
10911092 Local<Value> Finish () {
10921093 if (error) {
1093- delete snapshot;
1094+
10941095 return error_to_js (*error, encoding_name, file_name);
10951096 } else {
10961097 snapshot->flush_preceding_changes ();
1097- delete snapshot;
1098+
10981099 return Nan::Null ();
10991100 }
11001101 }
0 commit comments