@@ -122,7 +122,7 @@ void GitIndex::OpenWork(uv_work_t *req) {
122122 baton->index_path
123123 );
124124 baton->error_code = result;
125- if (result != GIT_OK) {
125+ if (result != GIT_OK && giterr_last () != NULL ) {
126126 baton->error = git_error_dup (giterr_last ());
127127 }
128128}
@@ -151,6 +151,9 @@ void GitIndex::OpenAfterWork(uv_work_t *req) {
151151 Exception::Error (String::New (baton->error ->message ))
152152 };
153153 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
154+ if (baton->error ->message )
155+ free ((void *)baton->error ->message );
156+ free ((void *)baton->error );
154157 } else {
155158 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
156159 }
@@ -195,7 +198,7 @@ void GitIndex::ReadWork(uv_work_t *req) {
195198 baton->index
196199 );
197200 baton->error_code = result;
198- if (result != GIT_OK) {
201+ if (result != GIT_OK && giterr_last () != NULL ) {
199202 baton->error = git_error_dup (giterr_last ());
200203 }
201204}
@@ -218,6 +221,9 @@ void GitIndex::ReadAfterWork(uv_work_t *req) {
218221 Exception::Error (String::New (baton->error ->message ))
219222 };
220223 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
224+ if (baton->error ->message )
225+ free ((void *)baton->error ->message );
226+ free ((void *)baton->error );
221227 } else {
222228 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
223229 }
@@ -261,7 +267,7 @@ void GitIndex::WriteWork(uv_work_t *req) {
261267 baton->index
262268 );
263269 baton->error_code = result;
264- if (result != GIT_OK) {
270+ if (result != GIT_OK && giterr_last () != NULL ) {
265271 baton->error = git_error_dup (giterr_last ());
266272 }
267273}
@@ -284,6 +290,9 @@ void GitIndex::WriteAfterWork(uv_work_t *req) {
284290 Exception::Error (String::New (baton->error ->message ))
285291 };
286292 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
293+ if (baton->error ->message )
294+ free ((void *)baton->error ->message );
295+ free ((void *)baton->error );
287296 } else {
288297 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
289298 }
@@ -336,7 +345,7 @@ void GitIndex::ReadTreeWork(uv_work_t *req) {
336345 baton->tree
337346 );
338347 baton->error_code = result;
339- if (result != GIT_OK) {
348+ if (result != GIT_OK && giterr_last () != NULL ) {
340349 baton->error = git_error_dup (giterr_last ());
341350 }
342351}
@@ -359,6 +368,9 @@ void GitIndex::ReadTreeAfterWork(uv_work_t *req) {
359368 Exception::Error (String::New (baton->error ->message ))
360369 };
361370 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
371+ if (baton->error ->message )
372+ free ((void *)baton->error ->message );
373+ free ((void *)baton->error );
362374 } else {
363375 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
364376 }
@@ -406,7 +418,7 @@ void GitIndex::WriteTreeWork(uv_work_t *req) {
406418 baton->index
407419 );
408420 baton->error_code = result;
409- if (result != GIT_OK) {
421+ if (result != GIT_OK && giterr_last () != NULL ) {
410422 baton->error = git_error_dup (giterr_last ());
411423 }
412424}
@@ -435,6 +447,9 @@ void GitIndex::WriteTreeAfterWork(uv_work_t *req) {
435447 Exception::Error (String::New (baton->error ->message ))
436448 };
437449 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
450+ if (baton->error ->message )
451+ free ((void *)baton->error ->message );
452+ free ((void *)baton->error );
438453 } else {
439454 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
440455 }
@@ -620,7 +635,7 @@ void GitIndex::AddBypathWork(uv_work_t *req) {
620635 baton->path
621636 );
622637 baton->error_code = result;
623- if (result != GIT_OK) {
638+ if (result != GIT_OK && giterr_last () != NULL ) {
624639 baton->error = git_error_dup (giterr_last ());
625640 }
626641}
@@ -643,6 +658,9 @@ void GitIndex::AddBypathAfterWork(uv_work_t *req) {
643658 Exception::Error (String::New (baton->error ->message ))
644659 };
645660 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
661+ if (baton->error ->message )
662+ free ((void *)baton->error ->message );
663+ free ((void *)baton->error );
646664 } else {
647665 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
648666 }
@@ -828,7 +846,7 @@ void GitIndex::IndexToWorkdirWork(uv_work_t *req) {
828846 baton->opts
829847 );
830848 baton->error_code = result;
831- if (result != GIT_OK) {
849+ if (result != GIT_OK && giterr_last () != NULL ) {
832850 baton->error = git_error_dup (giterr_last ());
833851 }
834852}
@@ -857,6 +875,9 @@ void GitIndex::IndexToWorkdirAfterWork(uv_work_t *req) {
857875 Exception::Error (String::New (baton->error ->message ))
858876 };
859877 baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv);
878+ if (baton->error ->message )
879+ free ((void *)baton->error ->message );
880+ free ((void *)baton->error );
860881 } else {
861882 baton->callback ->Call (Context::GetCurrent ()->Global (), 0 , NULL );
862883 }
0 commit comments