mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-03-28 07:47:03 -05:00
<!-- Please provide as much information as possible about what your PR aims to do. PRs with no description will most likely be closed until more information is provided. If you're planing on changing fundamental behaviour or add big new features, please open a GitHub Issue first before starting to work on it. If it's not something big and you still want to contact us about it, feel free to do so ! --> ### Problem description This is a fix for the ImHex bug "ImHex crashes when analysing any PE file #2221" ### Implementation description This is a fix for the ImHex bug "ImHex crashes when analysing any PE file #2221". The fix requires changes to the Pattern Language and the ImHex UI. Revision would be wise. We want to avoid collateral damage. It's a big code base and I'm new to it and the compilers/build-systems used. And the bug is complex and low-level. I suspect this will fix other random crashes. The problem is caused by two issues: - The std::sort algorithm conjuring up garbage due to the sorting criteria not being a strict weak ordering. See [this](https://github.com/Voultapher/sort-research-rs/blob/main/writeup/sort_safety/text.md) link. - We sort shared_ptr<ptrn::Pattern> by pointer value, and the object is a clone. In essence we're changing the values as we're sorting. Fixes #2221 ### IMPORTANT I'm not sure how "plugins/builtin/source/content/data_formatters.cpp" got into the PR. Been trying for an hour to rectify. I'm not a Git expert (the last time I used source control seriously SourceSafe was a thing) please ignore that file. It's a fix for another PR I submitted. I suspect I stuffed up the branching and merging. --------- Co-authored-by: Nik <werwolv98@gmail.com>