Во время тестирования у меня есть фиктивный объект, который устанавливает errno = ETIMEDOUT;
Тестируемый объект видит ошибку и вызывает strerror_r , чтобы вернуть строку ошибки:
if (ret) {
if (ret == EAI_SYSTEM) {
char err[128];
strerror_r(errno, err, 128);
err_string.assign(err);
} else {
err_string.assign(gai_strerror(ret));
}
return ret;
}
Я не понимаю, почему strerror_r
возвращает мусор. Я даже пытался позвонить
strerror_r(ETIMEDOUT, err, 128)
прямо и до сих пор получил мусор. Я должен что-то упустить. Кажется, я получаю версию функции gnu, а не posix, но это не должно иметь никакого значения в этом случае.
Редактировать
Я нахожусь на Ubuntu 8.04. Версия glibc выглядит как 2.7 в features.h.