diff --git a/src/system/kernel/port.cpp b/src/system/kernel/port.cpp index 204934e13c..8e6d65cfd8 100644 --- a/src/system/kernel/port.cpp +++ b/src/system/kernel/port.cpp @@ -989,11 +989,14 @@ create_port(int32 queueLength, const char* name) return B_BAD_TEAM_ID; // create a port - Port* port = new(std::nothrow) Port(team_get_current_team_id(), queueLength, - name != NULL ? name : "unnamed port"); - if (port == NULL) - return B_NO_MEMORY; - BReference portRef(port, true); + BReference port; + { + Port* newPort = new(std::nothrow) Port(team_get_current_team_id(), + queueLength, name != NULL ? name : "unnamed port"); + if (newPort == NULL) + return B_NO_MEMORY; + port.SetTo(newPort, true); + } // check the ports limit const int32 previouslyUsed = atomic_add(&sUsedPorts, 1);