diff --git a/Sources/Plasma/CoreLib/hsRefCnt.h b/Sources/Plasma/CoreLib/hsRefCnt.h index 5a945fda..be374550 100644 --- a/Sources/Plasma/CoreLib/hsRefCnt.h +++ b/Sources/Plasma/CoreLib/hsRefCnt.h @@ -87,4 +87,60 @@ public: void TransferRef(const char* oldTag, const char* newTag); }; +template +class hsRef +{ +public: + hsRef() : fObj(nullptr) { } + hsRef(nullptr_t) : fObj(nullptr) { } + hsRef(_Ref *obj) : fObj(obj) { if (fObj) fObj->Ref(); } + hsRef(const hsRef<_Ref> ©) : fObj(copy.fObj) { if (fObj) fObj->Ref(); } + hsRef(hsRef<_Ref> &&move) : fObj(move.fObj) { move.fObj = nullptr; } + + ~hsRef() { if (fObj) fObj->UnRef(); } + + hsRef<_Ref> &operator=(_Ref *obj) + { + if (obj) + obj->Ref(); + if (fObj) + fObj->UnRef(); + fObj = obj; + return *this; + } + hsRef<_Ref> &operator=(const hsRef<_Ref> ©) { return operator=(copy.fObj); } + + hsRef<_Ref> &operator=(hsRef<_Ref> &&move) + { + if (fObj) + fObj->UnRef(); + fObj = move.fObj; + move.fObj = nullptr; + return *this; + } + + hsRef<_Ref> &operator=(nullptr_t) + { + if (fObj) + fObj->UnRef(); + fObj = nullptr; + } + + bool operator==(const hsRef<_Ref> &other) const { return fObj == other.fObj; } + bool operator!=(const hsRef<_Ref> &other) const { return fObj != other.fObj; } + bool operator> (const hsRef<_Ref> &other) const { return fObj > other.fObj; } + bool operator< (const hsRef<_Ref> &other) const { return fObj < other.fObj; } + bool operator>=(const hsRef<_Ref> &other) const { return fObj >= other.fObj; } + bool operator<=(const hsRef<_Ref> &other) const { return fObj <= other.fObj; } + bool operator==(_Ref *other) const { return fObj == other; } + bool operator!=(_Ref *other) const { return fObj != other; } + + _Ref &operator*() const { return *fObj; } + _Ref *const operator->() const { return fObj; } + operator _Ref *const() const { return fObj; } + +private: + _Ref *fObj; +}; + #endif diff --git a/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp b/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp index 3a4ec3ec..5801e552 100644 --- a/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp +++ b/Sources/Plasma/PubUtilLib/plVault/plVaultClientApi.cpp @@ -89,7 +89,7 @@ struct DeviceInbox : CHashKeyStr { // or stored in an IRelVaultNode's parents or children table. struct RelVaultNodeLink : THashKeyVal { HASHLINK(RelVaultNodeLink) link; - RelVaultNode * const node; + hsRef node; unsigned ownerId; bool seen; @@ -99,10 +99,6 @@ struct RelVaultNodeLink : THashKeyVal { , ownerId(ownerId) , seen(seen) { - node->Ref(); - } - ~RelVaultNodeLink () { - node->UnRef(); } }; @@ -456,8 +452,7 @@ static void FetchRefOwners ( ownerIds.Add(ownerId); } QSORT(unsigned, ownerIds.Ptr(), ownerIds.Count(), elem1 < elem2); - RelVaultNode * templateNode = new RelVaultNode; - templateNode->Ref(); + hsRef templateNode = new RelVaultNode; templateNode->SetNodeType(plVault::kNodeType_PlayerInfo); { unsigned prevId = 0; for (unsigned i = 0; i < ownerIds.Count(); ++i) { @@ -477,7 +472,6 @@ static void FetchRefOwners ( } } } - templateNode->UnRef(); } //============================================================================ @@ -1269,12 +1263,9 @@ RelVaultNode * RelVaultNode::GetChildNodeIncRef ( unsigned nodeType, unsigned maxDepth ) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(nodeType); - RelVaultNode * result = GetChildNodeIncRef(templateNode, maxDepth); - templateNode->UnRef(); - return result; + return GetChildNodeIncRef(templateNode, maxDepth); } //============================================================================ @@ -1282,14 +1273,11 @@ RelVaultNode * RelVaultNode::GetChildFolderNodeIncRef ( unsigned folderType, unsigned maxDepth ) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_Folder); VaultFolderNode folder(templateNode); folder.SetFolderType(folderType); - RelVaultNode * result = GetChildNodeIncRef(templateNode, maxDepth); - templateNode->UnRef(); - return result; + return GetChildNodeIncRef(templateNode, maxDepth); } //============================================================================ @@ -1297,14 +1285,11 @@ RelVaultNode * RelVaultNode::GetChildPlayerInfoListNodeIncRef ( unsigned folderType, unsigned maxDepth ) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_PlayerInfoList); VaultPlayerInfoListNode access(templateNode); access.SetFolderType(folderType); - RelVaultNode * result = GetChildNodeIncRef(templateNode, maxDepth); - templateNode->UnRef(); - return result; + return GetChildNodeIncRef(templateNode, maxDepth); } //============================================================================ @@ -1312,13 +1297,11 @@ RelVaultNode * RelVaultNode::GetChildAgeInfoListNodeIncRef ( unsigned folderType, unsigned maxDepth ) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfoList); VaultAgeInfoListNode access(templateNode); access.SetFolderType(folderType); RelVaultNode * result = GetChildNodeIncRef(templateNode, maxDepth); - templateNode->UnRef(); return result; } @@ -1369,15 +1352,13 @@ void RelVaultNode::GetChildNodesIncRef ( unsigned maxDepth, ARRAY(RelVaultNode*) * nodes ) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(nodeType); GetChildNodesIncRef( templateNode, maxDepth, nodes ); - templateNode->UnRef(); } //============================================================================ @@ -1386,8 +1367,7 @@ void RelVaultNode::GetChildFolderNodesIncRef ( unsigned maxDepth, ARRAY(RelVaultNode*) * nodes ) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_Folder); VaultFolderNode fldr(templateNode); fldr.SetFolderType(folderType); @@ -1396,7 +1376,6 @@ void RelVaultNode::GetChildFolderNodesIncRef ( maxDepth, nodes ); - templateNode->UnRef(); } //============================================================================ @@ -1587,8 +1566,7 @@ RelVaultNode * RelVaultNode::GetParentAgeLinkIncRef () { RelVaultNode * result = nil; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeLink); // Get our parent AgeLink node @@ -1597,8 +1575,7 @@ RelVaultNode * RelVaultNode::GetParentAgeLinkIncRef () { result = rvnLink->GetParentNodeIncRef(templateNode, 3); } - templateNode->UnRef(); - return result; + return result; } @@ -2013,8 +1990,7 @@ void VaultCreateNode ( void * state, void * param ) { - RelVaultNode * templateNode = new RelVaultNode; - templateNode->Ref(); + hsRef templateNode = new RelVaultNode; templateNode->SetNodeType(nodeType); VaultCreateNode( @@ -2023,8 +1999,6 @@ void VaultCreateNode ( state, param ); - - templateNode->UnRef(); } //============================================================================ @@ -2083,13 +2057,11 @@ RelVaultNode * VaultCreateNodeAndWaitIncRef ( ENetError * result ) { RelVaultNode * node; - RelVaultNode * templateNode = new RelVaultNode; - templateNode->Ref(); + hsRef templateNode = new RelVaultNode; templateNode->SetNodeType(nodeType); node = VaultCreateNodeAndWaitIncRef(templateNode, result); - templateNode->UnRef(); return node; } @@ -2294,13 +2266,11 @@ void VaultInitAge ( //============================================================================ static RelVaultNode * GetPlayerNode () { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_VNodeMgrPlayer); if (NetCommGetPlayer()) templateNode->SetNodeId(NetCommGetPlayer()->playerInt); RelVaultNode * result = GetNode(templateNode); - templateNode->UnRef(); return result; } @@ -2326,8 +2296,7 @@ RelVaultNode * VaultGetPlayerInfoNodeIncRef () { if (!rvnPlr) return nil; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_PlayerInfo); VaultPlayerInfoNode plrInfo(templateNode); plrInfo.SetPlayerId(rvnPlr->GetNodeId()); @@ -2338,8 +2307,6 @@ RelVaultNode * VaultGetPlayerInfoNodeIncRef () { if (RelVaultNode * rvnPlrInfo = rvnPlr->GetChildNodeIncRef(templateNode, 1)) result = rvnPlrInfo; - templateNode->UnRef(); - return result; } @@ -2391,8 +2358,7 @@ bool VaultGetLinkToMyNeighborhood (plAgeLinkStruct * link) { if (!rvnFldr) return false; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -2406,7 +2372,6 @@ bool VaultGetLinkToMyNeighborhood (plAgeLinkStruct * link) { info.CopyTo(link->GetAgeInfo()); node->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); return node != nil; @@ -2418,8 +2383,7 @@ bool VaultGetLinkToMyPersonalAge (plAgeLinkStruct * link) { if (!rvnFldr) return false; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -2433,7 +2397,6 @@ bool VaultGetLinkToMyPersonalAge (plAgeLinkStruct * link) { info.CopyTo(link->GetAgeInfo()); node->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); return node != nil; @@ -2445,8 +2408,7 @@ bool VaultGetLinkToCity (plAgeLinkStruct * link) { if (!rvnFldr) return false; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -2460,7 +2422,6 @@ bool VaultGetLinkToCity (plAgeLinkStruct * link) { info.CopyTo(link->GetAgeInfo()); node->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); return node != nil; @@ -2473,8 +2434,7 @@ RelVaultNode * VaultGetOwnedAgeLinkIncRef (const plAgeInfoStruct * info) { if (RelVaultNode * rvnFldr = VaultGetAgesIOwnFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -2494,7 +2454,6 @@ RelVaultNode * VaultGetOwnedAgeLinkIncRef (const plAgeInfoStruct * info) { rvnInfo->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); } @@ -2508,8 +2467,7 @@ RelVaultNode * VaultGetOwnedAgeInfoIncRef (const plAgeInfoStruct * info) { if (RelVaultNode * rvnFldr = VaultGetAgesIOwnFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -2524,7 +2482,6 @@ RelVaultNode * VaultGetOwnedAgeInfoIncRef (const plAgeInfoStruct * info) { rvnInfo = rvnFldr->GetChildNodeIncRef(templateNode, 2); - templateNode->UnRef(); rvnFldr->UnRef(); } @@ -2573,8 +2530,7 @@ bool VaultAddOwnedAgeSpawnPoint (const plUUID& ageInstId, const plSpawnPointInfo ARRAY(unsigned) nodeIds; fldr->GetChildNodeIds(&nodeIds, 1); - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode access(templateNode); access.SetAgeInstanceGuid(ageInstId); @@ -2592,7 +2548,6 @@ bool VaultAddOwnedAgeSpawnPoint (const plUUID& ageInstId, const plSpawnPointInfo break; } } - templateNode->UnRef(); break; } @@ -2637,8 +2592,7 @@ RelVaultNode * VaultGetVisitAgeLinkIncRef (const plAgeInfoStruct * info) { if (RelVaultNode * rvnFldr = VaultGetAgesICanVisitFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -2658,7 +2612,6 @@ RelVaultNode * VaultGetVisitAgeLinkIncRef (const plAgeInfoStruct * info) { rvnInfo->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); } @@ -3548,8 +3501,7 @@ RelVaultNode * VaultFindChronicleEntryIncRef (const wchar_t entryName[], int ent RelVaultNode * result = nil; if (RelVaultNode * rvnFldr = GetChildFolderNode(GetPlayerNode(), plVault::kChronicleFolder, 1)) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_Chronicle); VaultChronicleNode chrn(templateNode); chrn.SetEntryName(entryName); @@ -3557,8 +3509,7 @@ RelVaultNode * VaultFindChronicleEntryIncRef (const wchar_t entryName[], int ent chrn.SetEntryType(entryType); if (RelVaultNode * rvnChrn = rvnFldr->GetChildNodeIncRef(templateNode, 255)) result = rvnChrn; - templateNode->UnRef(); - } + } return result; } @@ -3582,8 +3533,7 @@ void VaultAddChronicleEntryAndWait ( chrnNode.SetEntryValue(entryValue); } else if (RelVaultNode * rvnFldr = GetChildFolderNode(GetPlayerNode(), plVault::kChronicleFolder, 1)) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_Chronicle); VaultChronicleNode chrnNode(templateNode); chrnNode.SetEntryName(entryName); @@ -3594,7 +3544,6 @@ void VaultAddChronicleEntryAndWait ( VaultAddChildNode(rvnFldr->GetNodeId(), rvnChrn->GetNodeId(), 0, nil, nil); rvnChrn->UnRef(); } - templateNode->UnRef(); } } @@ -3604,8 +3553,7 @@ bool VaultAmIgnoringPlayer (unsigned playerId) { if (RelVaultNode * rvnFldr = GetChildPlayerInfoListNode(GetPlayerNode(), plVault::kIgnoreListFolder, 1)) { rvnFldr->Ref(); - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_PlayerInfo); VaultPlayerInfoNode pinfoNode(templateNode); pinfoNode.SetPlayerId(playerId); @@ -3615,7 +3563,6 @@ bool VaultAmIgnoringPlayer (unsigned playerId) { rvnPlayerInfo->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); } @@ -3841,13 +3788,11 @@ void VaultProcessPlayerInbox () { if (RelVaultNode * rvnInbox = VaultGetPlayerInboxFolderIncRef()) { { // Process new visit requests ARRAY(RelVaultNode*) visits; - RelVaultNode * templateNode = new RelVaultNode; - templateNode->Ref(); + hsRef templateNode = new RelVaultNode; templateNode->SetNodeType(plVault::kNodeType_TextNote); VaultTextNoteNode tmpAcc(templateNode); tmpAcc.SetNoteType(plVault::kNoteType_Visit); rvnInbox->GetChildNodesIncRef(templateNode, 1, &visits); - templateNode->UnRef(); for (unsigned i = 0; i < visits.Count(); ++i) { RelVaultNode * rvnVisit = visits[i]; @@ -3864,13 +3809,11 @@ void VaultProcessPlayerInbox () { } { // Process new unvisit requests ARRAY(RelVaultNode*) unvisits; - RelVaultNode * templateNode = new RelVaultNode; - templateNode->Ref(); + hsRef templateNode = new RelVaultNode; templateNode->SetNodeType(plVault::kNodeType_TextNote); VaultTextNoteNode tmpAcc(templateNode); tmpAcc.SetNoteType(plVault::kNoteType_UnVisit); rvnInbox->GetChildNodesIncRef(templateNode, 1, &unvisits); - templateNode->UnRef(); for (unsigned i = 0; i < unvisits.Count(); ++i) { RelVaultNode * rvnUnVisit = unvisits[i]; @@ -3899,27 +3842,23 @@ void VaultProcessPlayerInbox () { //============================================================================ static RelVaultNode * GetAgeNode () { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_VNodeMgrAge); if (NetCommGetAge()) templateNode->SetNodeId(NetCommGetAge()->ageVaultId); RelVaultNode * result = GetNode(templateNode); - templateNode->UnRef(); return result; } //============================================================================ RelVaultNode * VaultGetAgeNodeIncRef () { RelVaultNode * result = nil; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_VNodeMgrAge); if (NetCommGetAge()) templateNode->SetNodeId(NetCommGetAge()->ageVaultId); if (RelVaultNode * rvnAge = VaultGetNodeIncRef(templateNode)) result = rvnAge; - templateNode->UnRef(); return result; } @@ -3930,8 +3869,7 @@ static RelVaultNode * GetAgeInfoNode () { return nil; RelVaultNode * result = nil; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); templateNode->SetCreatorId(rvnAge->GetNodeId()); @@ -3941,7 +3879,6 @@ static RelVaultNode * GetAgeInfoNode () { result = rvnAgeInfo; } - templateNode->UnRef(); rvnAge->UnRef(); return result; @@ -3954,15 +3891,13 @@ RelVaultNode * VaultGetAgeInfoNodeIncRef () { return nil; RelVaultNode * result = nil; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); templateNode->SetCreatorId(rvnAge->GetNodeId()); if (RelVaultNode * rvnAgeInfo = rvnAge->GetChildNodeIncRef(templateNode, 1)) result = rvnAgeInfo; - templateNode->UnRef(); rvnAge->UnRef(); return result; @@ -4029,8 +3964,7 @@ RelVaultNode * VaultFindAgeSubAgeLinkIncRef (const plAgeInfoStruct * info) { if (RelVaultNode * rvnFldr = VaultGetAgeSubAgesFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -4045,7 +3979,6 @@ RelVaultNode * VaultFindAgeSubAgeLinkIncRef (const plAgeInfoStruct * info) { rvnInfo->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); } @@ -4102,8 +4035,7 @@ RelVaultNode * VaultAgeAddDeviceAndWaitIncRef (const wchar_t deviceName[]) { //============================================================================ void VaultAgeRemoveDevice (const wchar_t deviceName[]) { if (RelVaultNode * folder = VaultGetAgeDevicesFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_TextNote); VaultTextNoteNode access(templateNode); access.SetNoteTitle(deviceName); @@ -4114,7 +4046,6 @@ void VaultAgeRemoveDevice (const wchar_t deviceName[]) { if (DeviceInbox * deviceInbox = s_ageDeviceInboxes.Find(CHashKeyStr(deviceName))) delete device; } - templateNode->UnRef(); folder->UnRef(); } } @@ -4123,8 +4054,7 @@ void VaultAgeRemoveDevice (const wchar_t deviceName[]) { bool VaultAgeHasDevice (const wchar_t deviceName[]) { bool found = false; if (RelVaultNode * folder = VaultGetAgeDevicesFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_TextNote); VaultTextNoteNode access(templateNode); access.SetNoteTitle(deviceName); @@ -4132,7 +4062,6 @@ bool VaultAgeHasDevice (const wchar_t deviceName[]) { found = true; device->UnRef(); } - templateNode->UnRef(); folder->UnRef(); } return found; @@ -4142,14 +4071,12 @@ bool VaultAgeHasDevice (const wchar_t deviceName[]) { RelVaultNode * VaultAgeGetDeviceIncRef (const wchar_t deviceName[]) { RelVaultNode * result = nil; if (RelVaultNode * folder = VaultGetAgeDevicesFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_TextNote); VaultTextNoteNode access(templateNode); access.SetNoteTitle(deviceName); if (RelVaultNode * device = folder->GetChildNodeIncRef(templateNode, 1)) result = device; - templateNode->UnRef(); folder->UnRef(); } return result; @@ -4214,14 +4141,12 @@ RelVaultNode * VaultAgeGetDeviceInboxIncRef (const wchar_t deviceName[]) { } if (parentNode) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_Folder); VaultFolderNode access(templateNode); access.SetFolderType(plVault::kDeviceInboxFolder); access.SetFolderName(devInbox->inboxName); result = parentNode->GetChildNodeIncRef(templateNode, 1); - templateNode->UnRef(); parentNode->UnRef(); } } @@ -4278,8 +4203,7 @@ RelVaultNode * VaultGetSubAgeLinkIncRef (const plAgeInfoStruct * info) { if (RelVaultNode * rvnFldr = VaultGetAgeSubAgesFolderIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -4294,7 +4218,6 @@ RelVaultNode * VaultGetSubAgeLinkIncRef (const plAgeInfoStruct * info) { rvnInfo->UnRef(); } - templateNode->UnRef(); rvnFldr->UnRef(); } @@ -4739,8 +4662,7 @@ bool VaultAgeFindOrCreateChildAgeLinkAndWait ( // Check for existing child age in folder RelVaultNode * rvnLink = nil; - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_AgeInfo); VaultAgeInfoNode ageInfo(templateNode); @@ -4755,7 +4677,6 @@ bool VaultAgeFindOrCreateChildAgeLinkAndWait ( rvnInfo->UnRef(); } - templateNode->UnRef(); rvnChildAges->UnRef(); if (rvnLink) { @@ -5164,12 +5085,10 @@ void VaultCull (unsigned vaultId) { RelVaultNode * VaultGetSystemNodeIncRef () { RelVaultNode * result = nil; if (RelVaultNode * player = VaultGetPlayerNodeIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_System); if (RelVaultNode * systemNode = player->GetChildNodeIncRef(templateNode, 1)) result = systemNode; - templateNode->UnRef(); player->UnRef(); } return result; @@ -5179,14 +5098,12 @@ RelVaultNode * VaultGetSystemNodeIncRef () { RelVaultNode * VaultGetGlobalInboxIncRef () { RelVaultNode * result = nil; if (RelVaultNode * system = VaultGetSystemNodeIncRef()) { - NetVaultNode * templateNode = new NetVaultNode; - templateNode->Ref(); + hsRef templateNode = new NetVaultNode; templateNode->SetNodeType(plVault::kNodeType_Folder); VaultFolderNode folder(templateNode); folder.SetFolderType(plVault::kGlobalInboxFolder); if (RelVaultNode * inbox = system->GetChildNodeIncRef(templateNode, 1)) result = inbox; - templateNode->UnRef(); system->UnRef(); } return result;