Fix wrong type casting 20/237420/2
authorHwankyu Jhun <h.jhun@samsung.com>
Tue, 30 Jun 2020 09:07:11 +0000 (18:07 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 30 Jun 2020 09:41:14 +0000 (18:41 +0900)
Change-Id: Iffb69cf26f9a6cb0e60def2111163de6569e06f8
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/key-info-internal.cc
src/key-info-internal.h
src/stub.cc

index 155a65a..b415584 100644 (file)
@@ -46,6 +46,7 @@ KeyInfo::KeyInfo(const KeyInfo& key_info) {
   type_ = key_info.type_;
   key_ = key_info.key_;
   values_size_ = key_info.values_size_;
+  uvalues_size_ = key_info.uvalues_size_;
   for (unsigned int i = 0; i < key_info.values_.size(); ++i) {
     auto* new_value = new (std::nothrow) unsigned char[values_size_[i]];
     std::copy(key_info.values_[i].get(),
@@ -59,6 +60,7 @@ KeyInfo& KeyInfo::operator = (const KeyInfo& key_info) {
     type_ = key_info.type_;
     key_ = key_info.key_;
     values_size_ = key_info.values_size_;
+    uvalues_size_ = key_info.uvalues_size_;
     for (unsigned int i = 0; i < key_info.values_.size(); ++i) {
       auto* new_value = new (std::nothrow) unsigned char[values_size_[i]];
       std::copy(key_info.values_[i].get(),
@@ -75,6 +77,7 @@ KeyInfo::KeyInfo(KeyInfo&& key_info) noexcept {
   key_ = std::move(key_info.key_);
   values_ = std::move(key_info.values_);
   values_size_ = std::move(key_info.values_size_);
+  uvalues_size_ = std::move(key_info.uvalues_size_);
 }
 
 KeyInfo& KeyInfo::operator = (KeyInfo&& key_info) noexcept {
@@ -84,6 +87,7 @@ KeyInfo& KeyInfo::operator = (KeyInfo&& key_info) noexcept {
     key_ = std::move(key_info.key_);
     values_ = std::move(key_info.values_);
     values_size_ = std::move(key_info.values_size_);
+    uvalues_size_ = std::move(key_info.uvalues_size_);
   }
   return *this;
 }
@@ -137,11 +141,16 @@ const std::vector<std::size_t>& KeyInfo::GetValuesSize() {
   return values_size_;
 }
 
+const std::vector<unsigned int>& KeyInfo::GetUValuesSize() {
+  return uvalues_size_;
+}
+
 void KeyInfo::SetValue(const std::vector<unsigned char>& value) {
   auto* new_value = new (std::nothrow) unsigned char[value.size()];
   std::copy(value.begin(), value.end(), new_value);
   values_.emplace_back(new_value);
   values_size_.push_back(value.size());
+  uvalues_size_.push_back(static_cast<unsigned int>(value.size()));
 }
 
 void KeyInfo::SetValues(const std::vector<std::vector<unsigned char>>& values) {
@@ -150,6 +159,7 @@ void KeyInfo::SetValues(const std::vector<std::vector<unsigned char>>& values) {
     std::copy(values[i].begin(), values[i].end(), new_value);
     values_.emplace_back(new_value);
     values_size_.push_back(values[i].size());
+    uvalues_size_.push_back(values[i].size());
   }
 }
 
@@ -309,6 +319,7 @@ void KeyInfo::Decode(const std::vector<unsigned char>& bytes) {
 
     values_.emplace_back(new_value);
     values_size_.push_back(value_size);
+    uvalues_size_.push_back(static_cast<unsigned int>(value_size));
   }
 }
 
@@ -320,6 +331,7 @@ void KeyInfo::SetValue(int index, const std::vector<unsigned char>& value) {
   std::copy(value.begin(), value.end(), new_value);
   values_[index].reset(new_value);
   values_size_[index] = value.size();
+  uvalues_size_[index] = static_cast<unsigned int>(value.size());
 }
 
 int KeyInfo::GetSize() const {
index 217371d..3404773 100644 (file)
@@ -45,6 +45,7 @@ class KeyInfo {
   const std::string& GetKey();
   const std::vector<std::unique_ptr<unsigned char[]>>& GetValues();
   const std::vector<std::size_t>& GetValuesSize();
+  const std::vector<unsigned int>& GetUValuesSize();
   std::vector<unsigned char> Encode();
 
   void SetValue(int index, const std::vector<unsigned char>& value);
@@ -62,6 +63,7 @@ class KeyInfo {
   std::string key_;
   std::vector<std::unique_ptr<unsigned char[]>> values_;
   std::vector<std::size_t> values_size_;
+  std::vector<unsigned int> uvalues_size_;
 };
 
 }  // namespace internal
index aff0955..a0f88d3 100644 (file)
@@ -224,7 +224,7 @@ extern "C" EXPORT_API int bundle_keyval_get_array_val(bundle_keyval_t* kv,
   auto& values_size = const_cast<std::vector<std::size_t>&>(
       key_info->GetValuesSize());
   *array_val = reinterpret_cast<void**>(&values[0]);
-  *array_len = reinterpret_cast<unsigned int>(values.size());
+  *array_len = static_cast<unsigned int>(values.size());
   *array_item_size = reinterpret_cast<size_t*>(&values_size[0]);
   return BUNDLE_ERROR_NONE;
 }
@@ -606,10 +606,10 @@ extern "C" EXPORT_API int bundle_get_byte_array(bundle* b,
       key_info->GetValues());
   auto** values = reinterpret_cast<unsigned char**>(&raw_values[0]);
   *bytes_array = reinterpret_cast<void**>(values);
-  *len = reinterpret_cast<unsigned int>(raw_values.size());
+  *len = static_cast<unsigned int>(raw_values.size());
 
-  auto& raw_values_size = const_cast<std::vector<std::size_t>&>(
-      key_info->GetValuesSize());
+  auto& raw_values_size = const_cast<std::vector<unsigned int>&>(
+      key_info->GetUValuesSize());
   *array_element_size = reinterpret_cast<unsigned int*>(&raw_values_size[0]);
 
   return BUNDLE_ERROR_NONE;