LINUX.ORG.RU

История изменений

Исправление Kuzy, (текущая версия) :

Затем что никаких гарантий что там будет 0 нету. Я фигею - 50 лет проблеме, а до сих пор нахдятся те, кто хотят наступать на грабли.

Никаких гарантий, что функция отдаст правильную длину строки.
Никаких гарантий, что указатель будет указывать не на мусор за пределами.
Никаких гарантий, что std::string вернется в консистентном соcтоянии.

Что же делать?!

Ах, точно, если либа возвращает битую std::string - значит проблема в либе.

А вот если у либы в доках написано, что там null-terminated string, а возвращает мусор, то это проблема const char* и опасного api.

Ясно, понятно.

Исходная версия Kuzy, :

Затем что никаких гарантий что там будет 0 нету. Я фигею - 50 лет проблеме, а до сих пор нахдятся те, кто хотят наступать на грабли.

Никаких гарантий, что функция отдаст правильную длину строки.
Никаких гарантий, что указатель будет указывать не на мусор за пределами.
Никаких гарантий, что std::string вернется в консистентном соcтоянии.

Что же делать?!

Ах, точно, если либа возвращает битую std::string - значит проблема в либе.

А вот если у либы в доках написано, что там null-terminated string, а возвращает мусор, то это проблема const char*.

Ясно, понятно.