alarm_t* ret = static_cast<alarm_t*>(osi_calloc(sizeof(alarm_t)));
- ret->callback_mutex = new std::recursive_mutex;
+ std::shared_ptr<std::recursive_mutex> ptr(new std::recursive_mutex());
+ ret->callback_mutex = ptr;
ret->is_periodic = is_periodic;
ret->stats.name = osi_strdup(name);
+
+ ret->for_msg_loop = false;
+ // placement new
+ new (&ret->closure) CancelableClosureInStruct();
+
// NOTE: The stats were reset by osi_calloc() above
return ret;
if (!alarm) return;
alarm_cancel(alarm);
- delete alarm->callback_mutex;
+
osi_free((void*)alarm->stats.name);
+ alarm->closure.~CancelableClosureInStruct();
osi_free(alarm);
}