Searching a keyword and then clicking "Popular files" crashed in QSortFilterProxyModel::parent() (via rowsAboutToBeRemoved). SFDSortFilterProxyModel::setUploadedOnly() called invalidateFilter(), which runs Qt's incremental filter_changed row-removal path over the currently-mapped tree. After a search the tree is fully expanded and carries live persistent proxy indexes; removing an interior directory node frees the child mapping structs those indexes still point at, and the removal bookkeeping then dereferences freed memory -> SIGSEGV. The plain-search path never crashed because it is always preceded by a full model reset; the "Popular files" toggle was the only path that re-filtered without one (deliberately, to avoid a slow re-crawl). Use invalidate() instead: it rebuilds the whole proxy mapping via the layoutAboutToBeChanged/layoutChanged protocol, which remaps persistent indexes safely and never emits rowsAboutToBeRemoved. It rebuilds only the proxy mapping (lazy, near-instant) and does not re-crawl the source model, so the performance the toggle path was protecting is preserved. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| .reuse | ||
| build_scripts | ||
| data | ||
| jsonapi-generator | ||
| libbitdht@4355ea96b2 | ||
| libretroshare@cafaaa1964 | ||
| LICENSES | ||
| openpgpsdk@40db9d6bfe | ||
| plugins | ||
| retroshare-friendserver | ||
| retroshare-gui | ||
| retroshare-service | ||
| retroshare-webui@a28d77fe9a | ||
| supportlibs | ||
| tests | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .gitmodules | ||
| .travis.yml | ||
| CMakeLists.txt | ||
| COPYING | ||
| README.md | ||
| retroshare.pri | ||
| RetroShare.pro | ||
RetroShare
RetroShare is a decentralized, private, secure, cross-platform, communication toolkit. RetroShare provides file sharing, chat, messages, forums, channels, boards and more.
Get the source
Clone this repository, enter the directory and then get the submodules with the following command
git submodule update --init --remote --force libbitdht/ libretroshare/ openpgpsdk/
Compilation
Short of comprehensive and updated documentation on how to build RetroShare (for the many supported platforms it runs on), scripts and recipes are provided in the aim of creating packages for the supported platforms (and more) in the build_scripts directory of this repository.
Compilation on Windows
Follow this file : WindowsMSys2_InstallGuide
With QtCreator : Windows-QtCreator-InstallGuide
Compilation on MacOSX
Follow this file : MacOS_X_InstallGuide
Compilation on Linux
Follow this file : Linux_InstallGuide
Releases
Latest release here
Other Builds RetroShare Downloads