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(