boost::filesystem と libgit2 を使用して、git リポジトリを自分の PC に複製しています。終了するまではすべて正常に動作し、リポジトリのクローンを作成したディレクトリを削除しようとします。これを行うと、R6010 abort() が発生します。ここまでのコードです。
{
boost::filessytem::path dir("C:/myfolder");
boost::filesystem::create_directory(dir);
git_repository * repo;
git_clone_options option = GIT_CLONE_OPTIONS_INIT;
options.transport_flags = GIT_TRANSPORTFLAGS_NO_CHECK_CERT;
int error = git_clone(&repo, gitUrl.c_str(), "C:/myfolder", &option);
if(error != 0)
{
std::cout << giterr_last()->message;
}
//i)
git_repository_free(repo);
if(boost::filesytem::exists(dir))
{
//ii) boost::filesystem::remove_all(dir);
}
}
i) この行は、レポで使用されているメモリを解放することになっていますが、問題には影響していないようです。私がそれを使用するか、git_repository__cleanup を使用するか、まったく使用しないか。
ii) ここに問題があります。このコードは、git リポジトリがクローンされていないディレクトリを削除するときに機能しますが、この場合に使用するとクラッシュします。