diff --git a/common/commit-mgr.c b/common/commit-mgr.c index bf28a5b9..b83b509f 100644 --- a/common/commit-mgr.c +++ b/common/commit-mgr.c @@ -168,6 +168,7 @@ seaf_commit_free (SeafCommit *commit) g_free (commit->client_version); g_free (commit->magic); g_free (commit->random_key); + g_free (commit->salt); g_free (commit); } diff --git a/server/repo-mgr.c b/server/repo-mgr.c index a6a5c204..3312dc68 100644 --- a/server/repo-mgr.c +++ b/server/repo-mgr.c @@ -2246,6 +2246,28 @@ collect_repos_fill_size_commit (SeafDBRow *row, void *data) return TRUE; } +/* RepoInfo upgraded two times in history, + * the fist time 'repo_name' column was added + * and the second time column 'last_modifier' + * is added, so the default value NULL should be considered. + */ +static gboolean +mini_repo_incomplete (SeafRepo *repo) +{ + if (!repo->name || !repo->last_modifier) { + if (repo->name) { + g_free (repo->name); + } + if (repo->last_modifier) { + g_free (repo->last_modifier); + } + + return TRUE; + } + + return FALSE; +} + GList * seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr, const char *email, @@ -2318,7 +2340,7 @@ seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr, for (ptr = repo_list; ptr; ptr = ptr->next) { repo = ptr->data; if (ret_corrupted) { - if (!repo->is_corrupted && (!repo->name || !repo->last_modifier)) { + if (!repo->is_corrupted && mini_repo_incomplete (repo)) { load_mini_repo (mgr, repo); if (!repo->is_corrupted) set_repo_commit_to_db (repo->id, repo->name, repo->last_modify, @@ -2330,7 +2352,7 @@ seaf_repo_manager_get_repos_by_owner (SeafRepoManager *mgr, seaf_repo_unref (repo); continue; } - if (!repo->name || !repo->last_modifier) { + if (mini_repo_incomplete (repo)) { load_mini_repo (mgr, repo); if (!repo->is_corrupted) set_repo_commit_to_db (repo->id, repo->name, repo->last_modify,