Commit 001befcd by Anurag Gupta

Fix the issues in git__on_shutdown

parent d2c16e9a
......@@ -23,7 +23,7 @@ static git_atomic git__n_inits;
void git__on_shutdown(git_global_shutdown_fn callback)
{
int count = git_atomic_inc(&git__n_shutdown_callbacks);
assert(count <= MAX_SHUTDOWN_CB);
assert(count <= MAX_SHUTDOWN_CB && count > 0);
git__shutdown_callbacks[count - 1] = callback;
}
......@@ -31,10 +31,12 @@ static void git__shutdown(void)
{
int pos;
while ((pos = git_atomic_dec(&git__n_shutdown_callbacks)) >= 0) {
if (git__shutdown_callbacks[pos])
git__shutdown_callbacks[pos]();
}
for (pos = git_atomic_get(&git__n_shutdown_callbacks); pos > 0; pos = git_atomic_dec(&git__n_shutdown_callbacks))
if (git__shutdown_callbacks[pos - 1]) {
git__shutdown_callbacks[pos - 1]();
git__shutdown_callbacks[pos - 1] = NULL;
}
}
/**
......
......@@ -90,6 +90,8 @@ void git_sysdir_global_shutdown(void)
int i;
for (i = 0; i < GIT_SYSDIR__MAX; ++i)
git_buf_free(&git_sysdir__dirs[i]);
git_sysdir__dirs_shutdown_set = 0;
}
static int git_sysdir_check_selector(git_sysdir_t which)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment