The .pos value might get wrong (though I see no usage ATM).
Notes:
- It still returns KNOT_EOK in case of equality; that's due to usage in resolver and requirement to special-case KNOT_ANSWER anyway.
- I would personally assert(false) on all internal failures (e.g. EINVAL), as immediate abortion seems preferrable when in debug mode, but the code around typically doesn't do that, so I left it without assertions.