Fix exception safety issue 38/177438/2
authorJunghoon Park <jh9216.park@samsung.com>
Mon, 30 Apr 2018 02:27:24 +0000 (11:27 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Mon, 30 Apr 2018 02:30:35 +0000 (02:30 +0000)
Change-Id: I1bde5ae4e604dc38165ce98105759154be00a2ac
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
unit_tests/src/rpc_port_parcel_test.cc

index 8e89d22..1057292 100644 (file)
@@ -17,6 +17,7 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
 #include <iostream>
+#include <memory>
 #include <stdbool.h>
 #include <stdexcept>
 
@@ -198,24 +199,23 @@ TEST_F(ParcelTest, read_write_bundle) {
   bundle* b = bundle_create();
   ASSERT_NE(b, nullptr);
 
-  int ret = bundle_add_str(b, "Test", "Value");
+  auto bp = std::unique_ptr<bundle, decltype(bundle_free)*>(b, bundle_free);
+
+  int ret = bundle_add_str(bp.get(), "Test", "Value");
   ASSERT_EQ(ret, BUNDLE_ERROR_NONE);
 
-  ret = rpc_port_parcel_write_bundle(handle_, b);
+  ret = rpc_port_parcel_write_bundle(handle_, bp.get());
   ASSERT_EQ(ret, 0);
 
-  bundle_free(b);
   b = nullptr;
-
   ret = rpc_port_parcel_read_bundle(handle_, &b);
   ASSERT_EQ(ret, 0);
+  bp = std::unique_ptr<bundle, decltype(bundle_free)*>(b, bundle_free);
 
   char* str;
-  ret = bundle_get_str(b, "Test", &str);
+  ret = bundle_get_str(bp.get(), "Test", &str);
   ASSERT_EQ(ret, BUNDLE_ERROR_NONE);
   ASSERT_STREQ("Value", str);
-
-  bundle_free(b);
 }
 
 TEST_F(ParcelTest, read_write_array_count) {