Fix refcounting bug in f_removeChild(). Use a smart pointer to handle
the case where the removed child has no other referants, otherwise it will be deleted on function exit. Also give the ghost type a name for cleaner debugging.
This commit is contained in:
parent
0fbf965b39
commit
78d3763b41
1 changed files with 2 additions and 2 deletions
|
@ -26,7 +26,7 @@ static void propNodeGhostDestroy(void* ghost)
|
|||
delete prop;
|
||||
}
|
||||
|
||||
naGhostType PropNodeGhostType = { propNodeGhostDestroy };
|
||||
naGhostType PropNodeGhostType = { propNodeGhostDestroy, "prop" };
|
||||
|
||||
static naRef propNodeGhostCreate(naContext c, SGPropertyNode* n)
|
||||
{
|
||||
|
@ -267,7 +267,7 @@ static naRef f_removeChild(naContext c, naRef me, int argc, naRef* args)
|
|||
naRef child = naVec_get(argv, 0);
|
||||
naRef index = naVec_get(argv, 1);
|
||||
if(!naIsString(child) || !naIsNum(index)) return naNil();
|
||||
SGPropertyNode* n = 0;
|
||||
SGPropertyNode_ptr n = 0;
|
||||
try {
|
||||
n = (*node)->removeChild(naStr_data(child), (int)index.num, false);
|
||||
} catch (const string& err) {
|
||||
|
|
Loading…
Reference in a new issue