From d5479ce89cd374dc86ead6b727e93660adcf328f Mon Sep 17 00:00:00 2001 From: Georgiy Lebedev Date: Mon, 20 Nov 2023 02:27:34 +0300 Subject: [PATCH] WIP --- src/Client/ResponseDecoder.hpp | 6 +++++- test/ListUnitTest.cpp | 17 ++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Client/ResponseDecoder.hpp b/src/Client/ResponseDecoder.hpp index d10f5bef1..139abbdae 100644 --- a/src/Client/ResponseDecoder.hpp +++ b/src/Client/ResponseDecoder.hpp @@ -146,9 +146,13 @@ parseGreeting(std::string_view raw, Greeting &greeting) { if (line1.substr(0, name.size()) != name) return -1; std::string_view version_etc = line1.substr(name.size()); + version_etc = version_etc.substr(0, version_etc.find_first_of(' ')); + char version[32]; + assert(version_etc.size() + 1 < sizeof(version)); + version[version_etc.copy(version, sizeof(version))] = '\0'; /* Parse a version string */ unsigned major, minor, patch; - if (sscanf(version_etc.data(), "%u.%u.%u", &major, &minor, &patch) != 3) + if (sscanf(version, "%u.%u.%u", &major, &minor, &patch) != 3) return -1; greeting.version_id = versionId(major, minor, patch); diff --git a/test/ListUnitTest.cpp b/test/ListUnitTest.cpp index bf4adc28e..2b28328c6 100644 --- a/test/ListUnitTest.cpp +++ b/test/ListUnitTest.cpp @@ -40,6 +40,10 @@ struct Object : tnt::SingleLink { int m_Data; + Object() : m_Data(0) + { + } + Object(int id) : m_Data(id) { } @@ -1028,6 +1032,7 @@ void test_massive() std::vector sReference; const size_t ITER_COUNT = 100000; const size_t SIZE_LIM = 10; + std::array objects = {}; for (size_t i = 0; i < ITER_COUNT; i++) { bool sAdd = true; if (sReference.size() == SIZE_LIM) @@ -1037,20 +1042,18 @@ void test_massive() bool sBegin = (rand() & 1) == 0; if (sAdd) { int sValue = rand(); - Object *sObj = new Object(sValue); + objects[i].m_Data = sValue; if (sBegin) { - list.insert(*sObj); + list.insert(objects[i]); sReference.insert(sReference.begin(), sValue); } else { - list.insert(*sObj, true); + list.insert(objects[i], true); sReference.insert(sReference.end(), sValue); } } else { if (sBegin) { - delete &list.front(); sReference.erase(sReference.begin()); } else { - delete &list.back(); sReference.pop_back(); } } @@ -1162,12 +1165,12 @@ void test_multilinik_round() bool red_before = 0 != (r & 1); bool green_before = 0 != (r & 2); bool blue_before = 0 != (r & 4); - objects.emplace_back(id, near, - red_before, green_before, blue_before); expected_insert_near(expected_red, red_before, near.m_Data, id); expected_insert_near(expected_green, green_before, near.m_Data, id); expected_insert_near(expected_blue, blue_before, near.m_Data, id); + + objects.emplace_back(id, near, red_before, green_before, blue_before); }; auto insert_to_list = [&]() {