STLport c_str () неверное возвращаемое значение

Я столкнулся с проблемой STLport Реализация STL. Я использую его для Android, хотя платформа, вероятно, здесь не актуальна.
Я использую стороннюю разделяемую библиотеку, которая пытается открыть определенный файл. Этот путь к файлу передается в функцию как std::string, а затем доходит до встроенной функции библиотеки:

inline bool ReadProtoFromTextFile(const string& filename, Message* proto) {
return ReadProtoFromTextFile(filename.c_str(), proto);
}

а затем эта строка C используется в качестве аргумента open() функция. Проблема в том, что с STLport, ReadProtoFromTextFile функция получает недопустимую строку C, поэтому не удается открыть файл. Эта недопустимая строка C является детерминированной, это всегда следующая последовательность символов:

п!&\ Xffffffe8.

Когда я пытаюсь вызвать c_str () из моего кода, он всегда действителен.
Я попытался просмотреть проблемную строку с LLDB и получил эту ошибку:
ошибка: не удалось подготовить выражение к цели

Тем не менее, можно проверить внутреннюю структуру этой строки и проблемная последовательность строк присутствует там в _M_buffers._M_end_of_storage поле. Правильная последовательность также есть в _M_buffers._M_start_of_storage,

Когда я перешел на gnustl реализация, проблема исчезла. И LLDB показал .c_str () без проблем. Для меня это выглядит как внутренняя проблема, но что это может быть? stlport_shared рекомендуется реализация Google, в конце концов.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]