Nulling returned handle vars?

emootootoo

Top Banana
Reaction score
51
I've been looking into how to null a returned handle var.

eg.
JASS:
function hithar takes nothing returns group
    local group g = CreateGroup()
    ...
    return g
endfunction


I've done some searches, and am getting mixed messages here.

Source 1:http://www.thehelper.net/forums/showthread.php?t=33186

This says the variable will destroy itself when it returns the handle, so there's no need to null it.

Source 2:http://www.wc3campaigns.net/showthread.php?t=81872

This presents the problem that you arn't able to null a returned handle var, which implies that it does not destroy itself. "One, if your function must return the variable in question. Then, how can you set to null?"

So can anyone clear this up?

Also, assuming #2 is correct, to succesfully create/return a handle var with no leak I would have to use a wrapper? Like this?

JASS:
function helper takes group g returns group
    // ... do stuff w/ g
    return g
endfunction

function groupthing takes nothing returns group
    return helper(CreateGroup())
endfunction
 

Xorifelse

I'd love to elaborate about discussions...........
Reaction score
87
Use wrapper function, globals, H2I with HandleVars, or in this case for the group loop it through with FirstOfGroup().
 

emootootoo

Top Banana
Reaction score
51
Use global vars instead and only use local handles if they aren't needed in the return line



Yeah, I've been using globals until now, seems like the obvious thing to do.

So your answer is basically #2.

It's a shame it works that way...
 

Flare

Stops copies me!
Reaction score
662
That would still leak.

If you null g before you return, there's no leak (unless you forget to destroy udg_group or the variable you assigned to it and/or it gets overwritten) since it's pointing to the same group so if you destroy g, you destroy udg_group (and vice versa)

And I was talking more along the lines of
JASS:
//local declarations
set globalGroup = CreateGroup () //With no local group at all, since it's not needed
 

Xorifelse

I'd love to elaborate about discussions...........
Reaction score
87
Themis must've editted his post =D

And how was I to know you were going to reply before I finished my post :(

I edited it even before you even posted, i wasn't thinking straight.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top