[libcxx-commits] [libcxx] [libc++] Add assertions for potential OOB reads in std::nth_element (PR #67023)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Wed Sep 27 06:43:46 PDT 2023


================
@@ -50,24 +50,34 @@
 #include "bad_comparator_values.h"
 #include "check_assertion.h"
 
-void check_oob_sort_read() {
-    std::map<std::size_t, std::map<std::size_t, bool>> comparison_results; // terrible for performance, but really convenient
-    for (auto line : std::views::split(DATA, '\n') | std::views::filter([](auto const& line) { return !line.empty(); })) {
-        auto values = std::views::split(line, ' ');
-        auto it = values.begin();
-        std::size_t left = std::stol(std::string((*it).data(), (*it).size()));
-        it = std::next(it);
-        std::size_t right = std::stol(std::string((*it).data(), (*it).size()));
-        it = std::next(it);
-        bool result = static_cast<bool>(std::stol(std::string((*it).data(), (*it).size())));
-        comparison_results[left][right] = result;
-    }
-    auto predicate = [&](std::size_t* left, std::size_t* right) {
+class ComparisonResults {
+public:
+    ComparisonResults(std::string_view data) {
----------------
ldionne wrote:

```suggestion
    explicit ComparisonResults(std::string_view data) {
```

https://github.com/llvm/llvm-project/pull/67023


More information about the libcxx-commits mailing list