diff --git a/sdk/objc/components/network/RTCNetworkMonitor.mm b/sdk/objc/components/network/RTCNetworkMonitor.mm index 9f635a35d9..758e2473ed 100644 --- a/sdk/objc/components/network/RTCNetworkMonitor.mm +++ b/sdk/objc/components/network/RTCNetworkMonitor.mm @@ -82,30 +82,24 @@ rtc::AdapterType AdapterTypeFromInterfaceType( } else if (status == nw_path_status_satisfiable) { RTCLog(@"NW path monitor status: satisfiable."); } - std::map *map = - new std:: - map(); - nw_path_enumerate_interfaces( - path, - (nw_path_enumerate_interfaces_block_t) ^ - (nw_interface_t interface) { - const char *name = nw_interface_get_name(interface); - nw_interface_type_t interfaceType = - nw_interface_get_type(interface); - RTCLog(@"NW path monitor available interface: %s", name); - rtc::AdapterType adapterType = - AdapterTypeFromInterfaceType(interfaceType); - map->insert(std::pair( - name, adapterType)); - return true; - }); + std::map + owned_map; + auto map = &owned_map; // Capture raw pointer for Objective-C block + nw_path_enumerate_interfaces(path, ^(nw_interface_t interface) { + const char *name = nw_interface_get_name(interface); + nw_interface_type_t interfaceType = nw_interface_get_type(interface); + RTCLog(@"NW path monitor available interface: %s", name); + rtc::AdapterType adapterType = + AdapterTypeFromInterfaceType(interfaceType); + map->emplace(name, adapterType); + return true; + }); @synchronized(strongSelf) { webrtc::NetworkMonitorObserver *observer = strongSelf->_observer; if (observer) { - observer->OnPathUpdate(std::move(*map)); + observer->OnPathUpdate(std::move(owned_map)); } } - delete map; }); nw_path_monitor_set_queue( _pathMonitor,