Skip to content

Commit

Permalink
Don't free config in git_transaction_commit.
Browse files Browse the repository at this point in the history
The config is not owned by the transaction, so please don’t free it.
  • Loading branch information
arthurschreiber committed Sep 13, 2015
1 parent 1e80bf2 commit 548cb33
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
1 change: 0 additions & 1 deletion src/transaction.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,6 @@ int git_transaction_commit(git_transaction *tx)

if (tx->type == TRANSACTION_CONFIG) {
error = git_config_unlock(tx->cfg, true);
git_config_free(tx->cfg);
tx->cfg = NULL;

return error;
Expand Down
10 changes: 10 additions & 0 deletions tests/config/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,16 @@ void test_config_write__locking(void)
git_transaction_free(tx);

/* Now that we've unlocked it, we should see both updates */
cl_git_pass(git_config_get_entry(&entry, cfg, "section.name"));
cl_assert_equal_s("other value", entry->value);
git_config_entry_free(entry);
cl_git_pass(git_config_get_entry(&entry, cfg, "section2.name3"));
cl_assert_equal_s("more value", entry->value);
git_config_entry_free(entry);

git_config_free(cfg);

/* We should also see the changes after reopening the config */
cl_git_pass(git_config_open_ondisk(&cfg, filename));
cl_git_pass(git_config_get_entry(&entry, cfg, "section.name"));
cl_assert_equal_s("other value", entry->value);
Expand Down

0 comments on commit 548cb33

Please sign in to comment.