diff --git a/src/git.cc b/src/git.cc index d2ae2c0..5a157f7 100644 --- a/src/git.cc +++ b/src/git.cc @@ -59,11 +59,13 @@ Git::Repository::Diff::Lines Git::Repository::Diff::get_lines(const std::string } std::vector Git::Repository::Diff::get_hunks(const std::string &old_buffer, const std::string &new_buffer) { + initialize(); std::vector hunks; Error error; git_diff_options options; git_diff_init_options(&options, GIT_DIFF_OPTIONS_VERSION); options.context_lines = 0; + std::lock_guard lock(mutex); error.code = git_diff_buffers(old_buffer.c_str(), old_buffer.size(), nullptr, new_buffer.c_str(), new_buffer.size(), nullptr, &options, nullptr, nullptr, [](const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload) { auto hunks = static_cast *>(payload); hunks->emplace_back(hunk->old_start, hunk->old_lines, hunk->new_start, hunk->new_lines);