From 31c72b68c3cdb459d63abc973d5f2d21a2daefe6 Mon Sep 17 00:00:00 2001 From: Xinyi Zou Date: Sun, 1 Sep 2024 23:08:46 +0800 Subject: [PATCH] 1 --- be/src/util/parse_util.cpp | 7 +++++++ be/test/util/parse_util_test.cpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/be/src/util/parse_util.cpp b/be/src/util/parse_util.cpp index 8e810764e7be54..e1bd796e974b1c 100644 --- a/be/src/util/parse_util.cpp +++ b/be/src/util/parse_util.cpp @@ -98,6 +98,13 @@ int64_t ParseUtil::parse_mem_spec(const std::string& mem_spec_str, int64_t paren if (result != StringParser::PARSE_SUCCESS) { return -1; } + + auto limit_val_double = + StringParser::string_to_float(mem_spec_str.data(), number_str_len, &result); + if (result == StringParser::PARSE_SUCCESS && limit_val_double != limit_val) { + return -1; // mem_spec_str is double. + } + bytes = limit_val; } diff --git a/be/test/util/parse_util_test.cpp b/be/test/util/parse_util_test.cpp index e15aaa323cbb53..99016b45fcae3e 100644 --- a/be/test/util/parse_util_test.cpp +++ b/be/test/util/parse_util_test.cpp @@ -95,7 +95,7 @@ TEST(TestParseMemSpec, Bad) { for (const auto& value : bad_values) { bool is_percent = false; int64_t bytes = ParseUtil::parse_mem_spec(value, -1, MemInfo::_s_physical_mem, &is_percent); - EXPECT_EQ(-1, bytes); + EXPECT_EQ(-1, bytes) << ", value: " << value; } }