extern "C" {
#endif
+void wfd_peer_destroy(wfd_device_s *peer);
wfd_device_s *wfd_add_peer(void *data, unsigned char *dev_addr, char *dev_name);
int wfd_remove_peer(void *data, unsigned char *dev_addr);
int wfd_update_peer(void *data, wfd_device_s *peer);
if (data->vsie) {
if (peer->vsie)
- free(peer->vsie);
+ g_free(peer->vsie);
peer->vsie = g_strdup(data->vsie);
- free(data->vsie);
+ g_free(data->vsie);
data->vsie = NULL;
}
WDS_LOGD("Peer name: [%s], vsie: [%s]", peer->dev_name, peer->vsie);
while (temp && count < group->member_count) {
member = temp->data;
WDS_LOGD("%dth member[%p: %s] will be removed", count, member, member->dev_name);
- g_free(member);
+ wfd_peer_destroy(member);
member = NULL;
temp = g_list_next(temp);
count++;
}
group->members = g_list_remove(group->members, member);
- g_free(member);
+ wfd_peer_destroy(member);
group->member_count--;
member_cnt = group->member_count;
temp = g_list_next(temp);
manager->peers = g_list_remove(manager->peers, peer);
manager->peer_count--;
- g_free(peer);
+ wfd_peer_destroy(peer);
peer = NULL;
continue;
}
ret = wfd_manager_get_peer_info(manager, mac_addr, &peer);
if (ret < 0 || !peer) {
WDS_LOGE("Failed to get peer info");
- g_free(peer);
+ if (peer) {
+ if (peer->vsie)
+ g_free(peer->vsie);
+ g_free(peer);
+ }
WIFI_DIRECT_METHOD_RET_ERR(WIFI_DIRECT_ERROR_OPERATION_FAILED, dest);
}
ret = WIFI_DIRECT_ERROR_NONE;
return_parameters = g_variant_new("(ia{sv})", ret, builder_peer);
g_variant_builder_unref(builder_peer);
- g_free(peer->vsie);
+ if (peer->vsie)
+ g_free(peer->vsie);
g_free(peer);
wfd_manager_dbus_reply_params((GDBusMethodInvocation *)dest, return_parameters);
#include "wifi-direct-session.h"
#include "wifi-direct-log.h"
+void wfd_peer_destroy(wfd_device_s *peer)
+{
+ if (!peer)
+ return;
+
+ if (peer->vsie)
+ g_free(peer->vsie);
+
+ g_free(peer);
+
+ return;
+}
+
wfd_device_s *wfd_add_peer(void *data, unsigned char *dev_addr, char *dev_name)
{
manager->peers = g_list_remove(manager->peers, peer);
manager->peer_count--;
- g_free(peer);
+ wfd_peer_destroy(peer);
__WDS_LOG_FUNC_EXIT__;//LCOV_EXCL_LINE
return 0;
temp = g_list_first(manager->peers);
while (temp) {
peer = (wfd_device_s*) temp->data;
- g_free(peer);
+ wfd_peer_destroy(peer);
temp = g_list_next(temp);
manager->peer_count--;
}