Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PBFileChooser не отображает файлы #3

Open
Programmist11180 opened this issue Oct 19, 2024 · 0 comments
Open

PBFileChooser не отображает файлы #3

Programmist11180 opened this issue Oct 19, 2024 · 0 comments

Comments

@Programmist11180
Copy link

Приветствую.
Обнаружил ошибку в классе PBFileChooser. В приложении PBXMMS2client, запущенном в эмуляторе, при открытии файлового диалога не отображаются никакие файлы, вне зависимости от выбранного фильтра.
PBFileChooser вызывается так:
OpenFileChooser("Add 1 file", clsc->last_dir.data(), "*.mp3\n*.flac\n*.ogg\n*.wav\n*", PBFileChooser::PBFC_OPEN, (pb_dialoghandler) track_add_handler);
Для сборки для работы в эмуляторе использовался комилятор g++-14-i686-linux-gnu версия 14.2.0-6cross1 из дистрибутива Debian.
При этом, что странно, на PocketBook'е работает без ошибки. И в эмуляторе относительно недавно тоже этого не было.

При внимательном изучении и отладке нашел ошибку: В файле pbfilechooser.cxx строка 57, указателю присваивается адрес строки, возвращаемый функцией fc->getPattern(). В свою очередь, в файле pbfilechooser.h строка 100, берется указатель от временного объекта, который уничтожается при выходе из getPattern(). В отладчике видно, что при после выполнения строки 61 (ep = iv_readdir(dir)) по адресу указателя pattern появляется другое содержимое, и дальнейшее по коду сравнение строк работает неправильно.
Видимо какие-то изменения в последних обновлениях компилятора привели к тому, что эта ошибка стала проявляться.

Я сделал такое исправление в файле pbfilechooser.cxx:
//const char* pattern = fc->getPattern();
char pattern[128];
strncpy(pattern, fc->getPattern(), 128);
и ошибка исчезла. Исправление не очень, т.к. вообще надо в pbfilechooser.h устранять возвращение указателя на временный объект.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant