metaclass: (Default)
[personal profile] metaclass
Бездны крестиков
boost_1_49_0\libs\filesystem\v3\src\operations.cpp
https://gist.github.com/3735989

После рекурсивного вызова не проверяется ec, соответственно, если он сломается - ошибка будет возвращена от попытки create_directory, а не настоящая ошибка от рекурсивного вызова.
Надо бы поискать в баг-трекере или отрепортить это дело.
PS: В 1.51.0 баг починен.

Date: 2012-09-17 07:15 am (UTC)
From: [identity profile] dair-spb.livejournal.com
Я уже после названия первой директории бы дальше не ходил.

Date: 2012-09-17 09:25 am (UTC)
From: [identity profile] nivanych.livejournal.com
Надо уметь превозмогать свой страх и отвращение!
Если есть хоть какое-то обоснование, зачем, конечно ;-)

Date: 2012-09-17 07:31 am (UTC)
From: [identity profile] nivanych.livejournal.com
> Бездны крестиков

Бездны крестиковой оккупации!

Date: 2012-09-17 08:49 am (UTC)
From: [identity profile] levgem.livejournal.com
какой-то кошмар. Это тоже С++?

Date: 2012-09-17 09:16 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, популярная С++ библиотека :)

Date: 2012-09-17 09:24 am (UTC)
From: [identity profile] nivanych.livejournal.com
;-) Ну не эрланг же!

Date: 2012-09-17 10:38 am (UTC)
From: [identity profile] trueblacker.livejournal.com
нда :(
а ещё boost называется!
впрочем, версия уже не свежая

Date: 2012-09-17 10:52 am (UTC)
From: [identity profile] metaclass.livejournal.com
В 1.51.0 все починено, судя по виду.

Date: 2012-09-17 12:32 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
меня как-то достала постоянная модификация интерфейса этой конкретной библиотеки и я ее практически отовсюду выпилил
а так, вообще, сам буст - очень даже гут
но вот если ковырнуть что-то типа asio, там граблей просто тонны

Date: 2012-09-17 01:06 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Что значит "не проверяется"? Там есть is_directory - вот если этот метод сломается, ты получишь ошибку сразу.

Date: 2012-09-17 01:06 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Забавно, что никто из комментаторов этого не заметил.

Date: 2012-09-17 01:14 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Что я получу после ошибки в рекурсивном вызове?
Конкретно сейчас я получаю вместо ERROR_ACCESS_DENIED - ERROR_PATH_NOT_FOUND, потому что рекурсивный вызов валится с первой ошибкой, ничего не проверяется и выполняется попытка вызвать create_directory, после чего возвращается уже другая ошибка.

И таки в 1.51.0 это переделано корректно.

Date: 2012-09-17 01:16 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
 if (p.empty() || exists(p))
    {
      if (!p.empty() && !is_directory(p))

Это что? Это не отваливается? Почему?
Путь должен быть exists и каждый его элемент должен быть директорией. Вот эта штука и свалится.

Date: 2012-09-17 01:18 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я про:
// 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
Edited Date: 2012-09-17 01:19 pm (UTC)

Date: 2012-09-17 01:19 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Тьфу, теперь понял.

Да, это баг, следует починить.

Date: 2012-09-17 01:20 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
А, т.е. в новой версии починено. Тем лучше :)

Date: 2012-09-17 09:58 pm (UTC)
From: [identity profile] guamoka.livejournal.com
Э-э. Это такая крестики-спесифик бага? :-)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2025 10:47 am
Powered by Dreamwidth Studios