За что мне это?
Бездны крестиков
boost_1_49_0\libs\filesystem\v3\src\operations.cpp
https://gist.github.com/3735989
После рекурсивного вызова не проверяется ec, соответственно, если он сломается - ошибка будет возвращена от попытки create_directory, а не настоящая ошибка от рекурсивного вызова.
Надо бы поискать в баг-трекере или отрепортить это дело.
PS: В 1.51.0 баг починен.
boost_1_49_0\libs\filesystem\v3\src\operations.cpp
https://gist.github.com/3735989
После рекурсивного вызова не проверяется ec, соответственно, если он сломается - ошибка будет возвращена от попытки create_directory, а не настоящая ошибка от рекурсивного вызова.
Надо бы поискать в баг-трекере или отрепортить это дело.
PS: В 1.51.0 баг починен.
no subject
no subject
Бездны крестиковой оккупации!
no subject
no subject
no subject
no subject
Если есть хоть какое-то обоснование, зачем, конечно ;-)
no subject
а ещё boost называется!
впрочем, версия уже не свежая
no subject
no subject
а так, вообще, сам буст - очень даже гут
но вот если ковырнуть что-то типа asio, там граблей просто тонны
no subject
no subject
no subject
Конкретно сейчас я получаю вместо ERROR_ACCESS_DENIED - ERROR_PATH_NOT_FOUND, потому что рекурсивный вызов валится с первой ошибкой, ничего не проверяется и выполняется попытка вызвать create_directory, после чего возвращается уже другая ошибка.
И таки в 1.51.0 это переделано корректно.
no subject
Это что? Это не отваливается? Почему?
Путь должен быть exists и каждый его элемент должен быть директорией. Вот эта штука и свалится.
no subject
// First create branch, by calling ourself recursively
create_directories(p.parent_path(), ec);
// Now that parent's path exists, create the directory
create_directory(p, ec);
тут пропущено что-то вроде if(ec) return false;
но в новой версии они более сложным образом сделали, используя локальный error_code
no subject
Да, это баг, следует починить.
no subject
no subject