Browse Source

Fixed crash in newest libgit2: initialize must now be called before using git_diff_buffers

merge-requests/395/head
eidheim 7 years ago
parent
commit
f53bf4991e
  1. 2
      src/git.cc

2
src/git.cc

@ -59,11 +59,13 @@ Git::Repository::Diff::Lines Git::Repository::Diff::get_lines(const std::string
} }
std::vector<Git::Repository::Diff::Hunk> Git::Repository::Diff::get_hunks(const std::string &old_buffer, const std::string &new_buffer) { std::vector<Git::Repository::Diff::Hunk> Git::Repository::Diff::get_hunks(const std::string &old_buffer, const std::string &new_buffer) {
initialize();
std::vector<Git::Repository::Diff::Hunk> hunks; std::vector<Git::Repository::Diff::Hunk> hunks;
Error error; Error error;
git_diff_options options; git_diff_options options;
git_diff_init_options(&options, GIT_DIFF_OPTIONS_VERSION); git_diff_init_options(&options, GIT_DIFF_OPTIONS_VERSION);
options.context_lines = 0; options.context_lines = 0;
std::lock_guard<std::mutex> 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) { 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<std::vector<Git::Repository::Diff::Hunk> *>(payload); auto hunks = static_cast<std::vector<Git::Repository::Diff::Hunk> *>(payload);
hunks->emplace_back(hunk->old_start, hunk->old_lines, hunk->new_start, hunk->new_lines); hunks->emplace_back(hunk->old_start, hunk->old_lines, hunk->new_start, hunk->new_lines);

Loading…
Cancel
Save