boost::thread_exception (;
От: Юрий Жмеренецкий ICQ 380412032
Дата: 21.01.08 18:58
Оценка: 28 (1)
boost_1_33_1\libs\thread\src\exceptions.cpp:
std::string system_message(int sys_err_code)
{
/**/
}

const char* thread_exception::message() const
{
    if (m_sys_err != 0)
        return system_message(m_sys_err).c_str();
    return what();
}

Ф-я message особо и не документирована, но осадок остался...
Re: boost::thread_exception (;
От: Кодт Россия  
Дата: 21.01.08 20:13
Оценка:
Здравствуйте, Юрий Жмеренецкий, Вы писали:

ЮЖ>boost_1_33_1\libs\thread\src\exceptions.cpp:


Да уж, звоночек...

В 1.35 исправлено (убрано нафиг).
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: boost::thread_exception (;
От: skeptik_  
Дата: 21.01.08 20:17
Оценка:
Здравствуйте, Юрий Жмеренецкий, Вы писали:

ЮЖ>boost_1_33_1\libs\thread\src\exceptions.cpp:

ЮЖ>
ЮЖ>std::string system_message(int sys_err_code)
ЮЖ>{
ЮЖ>/**/
ЮЖ>}

ЮЖ>const char* thread_exception::message() const
ЮЖ>{
ЮЖ>    if (m_sys_err != 0)
ЮЖ>        return system_message(m_sys_err).c_str();
ЮЖ>    return what();
ЮЖ>}
ЮЖ>

ЮЖ>Ф-я message особо и не документирована, но осадок остался...

Не знаю, где это взял, во всех 33-х версиях это выглядит так:

std::string system_message(int sys_err_code)
{
    std::string str;
# ifdef BOOST_WINDOWS
    LPVOID lpMsgBuf;
    ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        sys_err_code,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
        (LPSTR)&lpMsgBuf,
        0,
        NULL);
    str += static_cast<LPCSTR>(lpMsgBuf);
    ::LocalFree(lpMsgBuf); // free the buffer
    while (str.size() && (str[str.size()-1] == '\n' ||
               str[str.size()-1] == '\r'))
    {
        str.erase(str.size()-1);
    }
# else
    str += std::strerror(errno);
# endif
    return str;
}

а в 34-ой этого вообще нет.
Re[2]: boost::thread_exception (;
От: skeptik_  
Дата: 21.01.08 20:23
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Юрий Жмеренецкий, Вы писали:


ЮЖ>>boost_1_33_1\libs\thread\src\exceptions.cpp:


К>Да уж, звоночек...


К>В 1.35 исправлено (убрано нафиг).

Да нет никаких звоничков. Специально проверил, в 31 этого ещё нет, в 32-33 как я ранее написал, в 34 этого уже нет.
Re[2]: boost::thread_exception (;
От: Юрий Жмеренецкий ICQ 380412032
Дата: 21.01.08 23:09
Оценка:
Здравствуйте, skeptik_, Вы писали:

_>Не знаю, где это взял, во всех 33-х версиях это выглядит так:


А ниже то что я написал...
+ этот код гуглится.
Re[3]: boost::thread_exception (;
От: skeptik_  
Дата: 22.01.08 04:01
Оценка:
Здравствуйте, Юрий Жмеренецкий, Вы писали:

ЮЖ>Здравствуйте, skeptik_, Вы писали:


_>>Не знаю, где это взял, во всех 33-х версиях это выглядит так:


ЮЖ>А ниже то что я написал...

ЮЖ>+ этот код гуглится.

0. Не вижу ничего такого.
1. Не гуглится.
Re[4]: boost::thread_exception (;
От: Юрий Жмеренецкий ICQ 380412032
Дата: 22.01.08 05:33
Оценка:
Здравствуйте, skeptik_, Вы писали:

ЮЖ>>А ниже то что я написал...

ЮЖ>>+ этот код гуглится.

_>0. Не вижу ничего такого.

_>1. Не гуглится.

здесь гугл

здесь код

P.S. Может Вам файл прислать ?
P.P.S. Или весь буст, из которого это ? (boost_1_33_1.exe, 9,70 МБ (10 181 389 байт), иконочка такая голубенькая)
Re[4]: boost::thread_exception (;
От: _Dreamer Россия  
Дата: 22.01.08 05:39
Оценка:
Здравствуйте, skeptik_, Вы писали:

_>0. Не вижу ничего такого.

_>1. Не гуглится.

возвращение указателя на память, которую освобождает временный std::string — это ничего такого ?

ну как же не гуглится.
вот по второй же ссылке Ulrich Eckhardt здесь поясняет, что тут не так, и просит —

Please, please, please fix this!

Re[3]: boost::thread_exception (;
От: Кодт Россия  
Дата: 22.01.08 10:44
Оценка:
Здравствуйте, skeptik_, Вы писали:

К>>Да уж, звоночек...


К>>В 1.35 исправлено (убрано нафиг).

_>Да нет никаких звоничков. Специально проверил, в 31 этого ещё нет, в 32-33 как я ранее написал, в 34 этого уже нет.

Звоночек есть. И состоит он в том, что если в одном месте позволили себе возвратить указатель на локальную переменную, то нужно внимательно отнестись ко всему остальному коду.
Боюсь, что линты на адских шаблонах пробуксуют. Значит, только ручками и глазками.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[4]: boost::thread_exception (;
От: skeptik_  
Дата: 22.01.08 12:30
Оценка: -2
Здравствуйте, Кодт, Вы писали:

К>Звоночек есть. И состоит он в том, что если в одном месте позволили себе возвратить указатель на локальную переменную, то нужно внимательно отнестись ко всему остальному коду.

По-русски пишите блин. Я сразу и не понял, что речь о функции message.
Re[5]: boost::thread_exception (;
От: Кодт Россия  
Дата: 22.01.08 14:07
Оценка: 1 (1)
Здравствуйте, skeptik_, Вы писали:

К>>Звоночек есть. И состоит он в том, что если в одном месте позволили себе возвратить указатель на локальную переменную, то нужно внимательно отнестись ко всему остальному коду.

_>По-русски пишите блин. Я сразу и не понял, что речь о функции message.

По-русски и было написано.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.