- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
OpFile file;
BOOL found;
if (OpStatus::IsMemoryError(file.Construct(realPath.CStr(), OPFILE_ABSOLUTE_FOLDER)) || OpStatus::IsMemoryError(file.Exists(found)))
{
return NULL;
}
else if (found == TRUE)
{
OpFileInfo::Mode mode;
if (OpStatus::IsMemoryError(file.GetMode(mode)))
{
return NULL;
}
else
{
is_file = (mode == OpFileInfo::FILE ? TRUE : FALSE);
}
}
да, но нет.
А он ещё и некорректный, как оказалось. Впрочем, как почти любой код, над чтением которого приходится напрягать мозг.
Т.е. на все остальные ошибки, помимо нехватки памяти, можно забить?
Интересно, а что при этом окажется в found... Неинициализированный мусор останется, наверное. Так что конпелятор не зря на эту хуиту ругался :3
З.Ы. Кинь ссылку на исходники.
https://notabug.org/141243/presto/src/master/modules/webserver/src/resources/webserver-file.cpp#L55
https://bitbucket.org/prestocore-fan/presto/src/c357e547fcbdfbf7bd448f6409ecb042a807bb06/modules/webserver/src/resources/webserver-file.cpp?at=master#webserver-file.cpp-55
platforms\windows\pop3-parse.cpp(1708)
modules\dom\src\opera\domgadgetfile.cpp( 760)
modules\webserver\src\resources\webserve r-file.cpp(55)
adjunct\quick_toolkit\windows\desktopwin dow.cpp(2825)
platforms\windows\imap-parse.cpp(3942)
Не эта ли гадость приводила к случайным падениям Оперы, которые трудно воспроизвести?
Т.е. если отобрать у оперы доступ к какой-нибудь папке, эта функция начнёт возвращать рандом для файлов в ней. Проверь.