Fix memory leak 61/231761/1
authorJunghoon Park <jh9216.park@samsung.com>
Fri, 24 Apr 2020 05:54:05 +0000 (14:54 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Fri, 24 Apr 2020 05:54:05 +0000 (14:54 +0900)
Change-Id: I0d0d9b6430d3c755b5cadaa8be5b44f57f8c1c1e
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
ambient-viewer/src/ambient-viewer.cc

index edb3f8f..56a06c0 100644 (file)
@@ -77,15 +77,13 @@ string AmbientViewer::GetUUID(string rid) const {
 
 void AmbientViewer::OnChangedSignal(keynode_t *node, void *user_data) {
   AmbientViewer* viewer = (AmbientViewer*)user_data;
-  const char* raw = vconf_get_str(VCONFKEY_WATCH_CURRENT_WATCH_INFO);
-  if (raw == nullptr || strlen(raw) == 0) {
-    if (raw != nullptr)
-      free((void*)raw);
+  char* raw = vconf_get_str(VCONFKEY_WATCH_CURRENT_WATCH_INFO);
+  unique_ptr<char, decltype(free)*> safe_raw(raw, free);
+  if (safe_raw.get() == nullptr || strlen(safe_raw.get()) == 0)
     return;
-  }
 
   try {
-    Bundle data(raw);
+    Bundle data(safe_raw.get());
     string appid = data.GetString(NOTIFY_CHANGED_EVENT_APPID_KEY);
     string rid = data.GetString(NOTIFY_CHANGED_EVENT_RID_KEY);
     viewer->watch_surface_ = viewer->CreateWatchSurface(