diff options
author | Yorick van Pelt <yorick@yorickvanpelt.nl> | 2023-08-28 18:20:23 +0200 |
---|---|---|
committer | Puck Meerburg <puck@puckipedia.com> | 2024-05-16 13:01:40 +0000 |
commit | 194654c96f61acc6dc47dd3126ad47618d45a0c8 (patch) | |
tree | 29a479d197f81ac80c4a260969e2ad39e0e9de95 /src/libexpr/primops.cc | |
parent | c6bb377c91f40ae571d0a0fc951b736cb8fc2ead (diff) |
primops: change to std::function, allowing the passing of user data
(cherry picked from commit 48aa57549d514432d6621c1e29f051951eca2d7f)
Change-Id: Ib7d5c6514031ceb6c42ac44588be6b0c1c3c225b
Diffstat (limited to 'src/libexpr/primops.cc')
-rw-r--r-- | src/libexpr/primops.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 33a2688f1..51a257e87 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -3329,8 +3329,11 @@ static void prim_sort(EvalState & state, const PosIdx pos, Value * * args, Value callFunction. */ /* TODO: (layus) this is absurd. An optimisation like this should be outside the lambda creation */ - if (args[0]->isPrimOp() && args[0]->primOp->fun == prim_lessThan) - return CompareValues(state, noPos, "while evaluating the ordering function passed to builtins.sort")(a, b); + if (args[0]->isPrimOp()) { + auto ptr = args[0]->primOp->fun.target<decltype(&prim_lessThan)>(); + if (ptr && *ptr == prim_lessThan) + return CompareValues(state, noPos, "while evaluating the ordering function passed to builtins.sort")(a, b); + } Value * vs[] = {a, b}; Value vBool; |