From 5832e560de36b8230319b4519aa2814d34d0f6c8 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 7 Jul 2024 13:59:33 +0200 Subject: [PATCH] libstd: Allow strings to be passed into crc hash functions --- lib/source/pl/lib/std/hash.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/source/pl/lib/std/hash.cpp b/lib/source/pl/lib/std/hash.cpp index dcf48b0d..3db90db0 100644 --- a/lib/source/pl/lib/std/hash.cpp +++ b/lib/source/pl/lib/std/hash.cpp @@ -10,8 +10,11 @@ namespace pl::lib::libstd::hash { template - static u128 crc(const auto ¶ms) { - auto pattern = params[0].toPattern(); + static u128 crc(pl::core::Evaluator *ctx, const auto ¶ms) { + if (!params[0].isPattern() && !params[0].isString()) + core::err::E0012.throwError("Only patterns and strings are supported for CRC hash functions."); + + auto bytes = params[0].toBytes(); auto init = params[1].toUnsigned(); auto poly = params[2].toUnsigned(); auto xorout = params[3].toUnsigned(); @@ -19,7 +22,7 @@ namespace pl::lib::libstd::hash { auto reflectOut = params[5].toUnsigned(); wolv::hash::Crc crc(poly, init, xorout, reflectIn, reflectOut); - crc.process(pattern->getBytes()); + crc.process(bytes); return u128(crc.getResult()); }