This is an automated email from the ASF dual-hosted git repository.

isapego pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new d279c36a49 IGNITE-19409 Fix bytes load offsets in 
binary_tuple_parser::get_period(). Some compiler warnings fixed. (#2022)
d279c36a49 is described below

commit d279c36a49ee4ef27fc659223dbad9312d56f2da
Author: Dmitriy Zabotlin <[email protected]>
AuthorDate: Thu May 4 14:52:09 2023 +0300

    IGNITE-19409 Fix bytes load offsets in binary_tuple_parser::get_period(). 
Some compiler warnings fixed. (#2022)
---
 .../cpp/ignite/tuple/binary_tuple_parser.cpp       | 24 +++++++++++-----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/modules/platforms/cpp/ignite/tuple/binary_tuple_parser.cpp 
b/modules/platforms/cpp/ignite/tuple/binary_tuple_parser.cpp
index f501a99562..c55ae3e392 100644
--- a/modules/platforms/cpp/ignite/tuple/binary_tuple_parser.cpp
+++ b/modules/platforms/cpp/ignite/tuple/binary_tuple_parser.cpp
@@ -46,7 +46,7 @@ ignite_date load_date(bytes_view bytes) {
 ignite_time load_time(bytes_view bytes) {
     std::uint64_t time = load_little<std::uint32_t>(bytes);
 
-    std::int32_t nano;
+    std::int32_t nano = 0;
     switch (bytes.size()) {
         case 4:
             nano = ((std::int32_t) time & ((1 << 10) - 1)) * 1000 * 1000;
@@ -309,20 +309,20 @@ ignite_period binary_tuple_parser::get_period(bytes_view 
bytes) {
         case 0:
             return {};
         case 3: {
-            auto years = load_little<std::int8_t>(bytes, 8);
-            auto months = load_little<std::int8_t>(bytes, 8);
-            auto days = load_little<std::int8_t>(bytes, 8);
+            auto years = load_little<std::int8_t>(bytes);
+            auto months = load_little<std::int8_t>(bytes, 1);
+            auto days = load_little<std::int8_t>(bytes, 2);
             return {years, months, days};
         }
         case 6: {
-            auto years = load_little<std::int16_t>(bytes, 8);
-            auto months = load_little<std::int16_t>(bytes, 8);
-            auto days = load_little<std::int16_t>(bytes, 8);
+            auto years = load_little<std::int16_t>(bytes);
+            auto months = load_little<std::int16_t>(bytes, 2);
+            auto days = load_little<std::int16_t>(bytes, 4);
             return {years, months, days};
         }
         case 12: {
-            auto years = load_little<std::int32_t>(bytes, 8);
-            auto months = load_little<std::int32_t>(bytes, 8);
+            auto years = load_little<std::int32_t>(bytes);
+            auto months = load_little<std::int32_t>(bytes, 4);
             auto days = load_little<std::int32_t>(bytes, 8);
             return {years, months, days};
         }
@@ -334,15 +334,15 @@ ignite_period binary_tuple_parser::get_period(bytes_view 
bytes) {
 ignite_duration binary_tuple_parser::get_duration(bytes_view bytes) {
     switch (bytes.size()) {
         case 0:
-            return ignite_duration();
+            return {};
         case 8: {
             auto seconds = load_little<std::int64_t>(bytes);
-            return ignite_duration(seconds, 0);
+            return {seconds, 0};
         }
         case 12: {
             auto seconds = load_little<std::int64_t>(bytes);
             auto nanos = load_little<std::int32_t>(bytes, 8);
-            return ignite_duration(seconds, nanos);
+            return {seconds, nanos};
         }
         default:
             throw std::out_of_range("Bad element size");

Reply via email to