From 54afa0d4d8a4d3bddecff4330786390f66b92523 Mon Sep 17 00:00:00 2001 From: illegal-instruction-co Date: Sun, 12 Mar 2023 21:14:01 +0300 Subject: [PATCH] trust NRVO This discrepancy was discovered by unaimed1337's comment. --- include/Toolkit/StringToolkit.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/Toolkit/StringToolkit.hpp b/include/Toolkit/StringToolkit.hpp index 02e4881..3c64704 100644 --- a/include/Toolkit/StringToolkit.hpp +++ b/include/Toolkit/StringToolkit.hpp @@ -3,7 +3,6 @@ #include "Toolkit.hpp" #include -#include namespace ii { class StringToolkit final : public Toolkit { @@ -11,23 +10,29 @@ namespace ii { static StringToolkit IsReadable(char* str) { if (str == nullptr) SetAs(false); + MEMORY_BASIC_INFORMATION mbi; + VirtualQuery(str, &mbi, sizeof(mbi)); + SetAs(mbi.Protect & PAGE_READONLY || mbi.Protect & PAGE_READWRITE); - return std::move(StringToolkit()); + + return StringToolkit(); } static StringToolkit IsAlphaNumeric(char* str) { if (str == nullptr) SetAs(false); + int len = sizeof(str); + for (int i = 0; i < len; i++) if (!(isalpha(str[i]) || isdigit(str[i]) && (str[i] >= 'A' && str[i] <= 'Z' || str[i] >= 'a' && str[i] <= 'z')) || str[i] < 0 || str[i] > 127) SetAs(false); SetAs(true); - return std::move(StringToolkit()); + return StringToolkit(); } }; }