Skip to content

Commit 7822fac

Browse files
committed
Checking for nulls; freeing memory
1 parent 29276d5 commit 7822fac

File tree

13 files changed

+247
-61
lines changed

13 files changed

+247
-61
lines changed

src/index.cc

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

src/object.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void GitObject::PeelWork(uv_work_t *req) {
145145
baton->target_type
146146
);
147147
baton->error_code = result;
148-
if (result != GIT_OK) {
148+
if (result != GIT_OK && giterr_last() != NULL) {
149149
baton->error = git_error_dup(giterr_last());
150150
}
151151
}
@@ -174,6 +174,9 @@ void GitObject::PeelAfterWork(uv_work_t *req) {
174174
Exception::Error(String::New(baton->error->message))
175175
};
176176
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
177+
if (baton->error->message)
178+
free((void *)baton->error->message);
179+
free((void *)baton->error);
177180
} else {
178181
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
179182
}

src/odb.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ void GitOdb::ReadWork(uv_work_t *req) {
209209
baton->id
210210
);
211211
baton->error_code = result;
212-
if (result != GIT_OK) {
212+
if (result != GIT_OK && giterr_last() != NULL) {
213213
baton->error = git_error_dup(giterr_last());
214214
}
215215
}
@@ -238,6 +238,9 @@ void GitOdb::ReadAfterWork(uv_work_t *req) {
238238
Exception::Error(String::New(baton->error->message))
239239
};
240240
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
241+
if (baton->error->message)
242+
free((void *)baton->error->message);
243+
free((void *)baton->error);
241244
} else {
242245
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
243246
}
@@ -456,7 +459,7 @@ void GitOdb::WriteWork(uv_work_t *req) {
456459
baton->type
457460
);
458461
baton->error_code = result;
459-
if (result != GIT_OK) {
462+
if (result != GIT_OK && giterr_last() != NULL) {
460463
baton->error = git_error_dup(giterr_last());
461464
}
462465
}
@@ -485,6 +488,9 @@ void GitOdb::WriteAfterWork(uv_work_t *req) {
485488
Exception::Error(String::New(baton->error->message))
486489
};
487490
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
491+
if (baton->error->message)
492+
free((void *)baton->error->message);
493+
free((void *)baton->error);
488494
} else {
489495
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
490496
}

src/reference.cc

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ void GitReference::OidForNameWork(uv_work_t *req) {
126126
baton->name
127127
);
128128
baton->error_code = result;
129-
if (result != GIT_OK) {
129+
if (result != GIT_OK && giterr_last() != NULL) {
130130
baton->error = git_error_dup(giterr_last());
131131
}
132132
}
@@ -155,6 +155,9 @@ void GitReference::OidForNameAfterWork(uv_work_t *req) {
155155
Exception::Error(String::New(baton->error->message))
156156
};
157157
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
158+
if (baton->error->message)
159+
free((void *)baton->error->message);
160+
free((void *)baton->error);
158161
} else {
159162
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
160163
}
@@ -274,7 +277,7 @@ void GitReference::ResolveWork(uv_work_t *req) {
274277
baton->ref
275278
);
276279
baton->error_code = result;
277-
if (result != GIT_OK) {
280+
if (result != GIT_OK && giterr_last() != NULL) {
278281
baton->error = git_error_dup(giterr_last());
279282
}
280283
}
@@ -303,6 +306,9 @@ void GitReference::ResolveAfterWork(uv_work_t *req) {
303306
Exception::Error(String::New(baton->error->message))
304307
};
305308
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
309+
if (baton->error->message)
310+
free((void *)baton->error->message);
311+
free((void *)baton->error);
306312
} else {
307313
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
308314
}
@@ -441,7 +447,7 @@ void GitReference::RenameWork(uv_work_t *req) {
441447
baton->force
442448
);
443449
baton->error_code = result;
444-
if (result != GIT_OK) {
450+
if (result != GIT_OK && giterr_last() != NULL) {
445451
baton->error = git_error_dup(giterr_last());
446452
}
447453
}
@@ -470,6 +476,9 @@ void GitReference::RenameAfterWork(uv_work_t *req) {
470476
Exception::Error(String::New(baton->error->message))
471477
};
472478
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
479+
if (baton->error->message)
480+
free((void *)baton->error->message);
481+
free((void *)baton->error);
473482
} else {
474483
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
475484
}
@@ -516,7 +525,7 @@ void GitReference::DeleteWork(uv_work_t *req) {
516525
baton->ref
517526
);
518527
baton->error_code = result;
519-
if (result != GIT_OK) {
528+
if (result != GIT_OK && giterr_last() != NULL) {
520529
baton->error = git_error_dup(giterr_last());
521530
}
522531
}
@@ -539,6 +548,9 @@ void GitReference::DeleteAfterWork(uv_work_t *req) {
539548
Exception::Error(String::New(baton->error->message))
540549
};
541550
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
551+
if (baton->error->message)
552+
free((void *)baton->error->message);
553+
free((void *)baton->error);
542554
} else {
543555
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
544556
}

src/remote.cc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ void GitRemote::ConnectWork(uv_work_t *req) {
223223
baton->direction
224224
);
225225
baton->error_code = result;
226-
if (result != GIT_OK) {
226+
if (result != GIT_OK && giterr_last() != NULL) {
227227
baton->error = git_error_dup(giterr_last());
228228
}
229229
}
@@ -246,6 +246,9 @@ void GitRemote::ConnectAfterWork(uv_work_t *req) {
246246
Exception::Error(String::New(baton->error->message))
247247
};
248248
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
249+
if (baton->error->message)
250+
free((void *)baton->error->message);
251+
free((void *)baton->error);
249252
} else {
250253
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
251254
}
@@ -303,7 +306,7 @@ void GitRemote::DownloadWork(uv_work_t *req) {
303306
baton->payload
304307
);
305308
baton->error_code = result;
306-
if (result != GIT_OK) {
309+
if (result != GIT_OK && giterr_last() != NULL) {
307310
baton->error = git_error_dup(giterr_last());
308311
}
309312
}
@@ -326,6 +329,9 @@ void GitRemote::DownloadAfterWork(uv_work_t *req) {
326329
Exception::Error(String::New(baton->error->message))
327330
};
328331
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
332+
if (baton->error->message)
333+
free((void *)baton->error->message);
334+
free((void *)baton->error);
329335
} else {
330336
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
331337
}
@@ -423,6 +429,9 @@ void GitRemote::DisconnectAfterWork(uv_work_t *req) {
423429
Exception::Error(String::New(baton->error->message))
424430
};
425431
baton->callback->Call(Context::GetCurrent()->Global(), 1, argv);
432+
if (baton->error->message)
433+
free((void *)baton->error->message);
434+
free((void *)baton->error);
426435
} else {
427436
baton->callback->Call(Context::GetCurrent()->Global(), 0, NULL);
428437
}

0 commit comments

Comments
 (0)