diff --git a/daemon/src/upnp/upnp_control.cpp b/daemon/src/upnp/upnp_control.cpp
index c30dbaefab68dc8cf9513abfabbdd87a3e1ab43d..ffcf933fa523c2aea76afa92b32f71a099ca9187 100644
--- a/daemon/src/upnp/upnp_control.cpp
+++ b/daemon/src/upnp/upnp_control.cpp
@@ -82,12 +82,13 @@ Controller::addAnyMapping(uint16_t port_desired,
     Mapping mapping = upnpContext_->addAnyMapping(port_desired, port_local, type,
                                                   use_same_port, unique);
     if (mapping) {
+        auto usedPort = mapping.getPortExternal();
         if (port_used)
-            *port_used = mapping.getPortExternal();
+            *port_used = usedPort;
 
         /* add to map */
         auto& instanceMappings = type == PortType::UDP ? udpMappings_ : tcpMappings_;
-        instanceMappings.emplace(*port_used, std::move(mapping));
+        instanceMappings.emplace(usedPort, std::move(mapping));
         return true;
     }
 #endif