J. Landman Gay wrote:
Andre Garzia wrote:
Dar,

I thought of that too, no libraryStack touches the global. The first thing I thought (after hitting my head in the wall a little) was: "hey, I must be emptying the global somewhere in the libraryStack of the mainStack", but no, I never touch it...

its very strange. I am now double checking my code. Also, removing the 'library' call made everything work again...

The "library" command is relatively new, compared to other options. Does the same thing happen if you instead use "start using stack <whatever>" or "insert script of stack <whatever> into back"? These two commands produce the same results and have been in the language longer. If those work and "library" doesn't, then you may have found a new...feature.

There's an interesting aspect of the libraryStack message which may be a red herring here or may be worth exploring:

The libraryStack message is sent to a stack whenever the stack is brought into the message path with the "start using" command*. But because the stack goes into the message path, any other stacks in the message path will also get the libraryStack message when it's sent to any stacks brought into use if that stack passes the message.

While I generally believe it's good form to pass system messages unless you know up front you'll absolutely never need the message downstream, Rob Cozens has turned me around on this one. The libraryStack message is just too easy to catch more than once, and to accomodate the possibility that other stacks may pass it you'll want something like this in your libraryStack handler:

  on libraryStack
    if the short name of the target is the short name of me then
       -- do initialization sturf
    else pass libraryStack
  end libraryStack

That way a libraryStack message sent directly to it gets handled, but any such messages merely passed to it get passed without being handled.

Given all this, there's the possibility that another stack's libraryStack message is being handled in your stack, reinitializing the global you're having trouble with.

You could double-check that with a breakpoint, but it might be even easier to just add a line with an answer command to notify you when the message is handled:

  on libraryStack
    global gMyTroubledGlobal
    answer the short name of the target &cr& gMyTroubledGlobal
    if the short name of the target is the short name of me then
       -- do initialization sturf
    else pass libraryStack
  end libraryStack

Like I said this may be a red herring, but I've had cases of redundant initialization myself (before I adopted Rob's advice <g>), so it may be worth checking out.


* For those of you getting started with Rev and going to RevCon West, Dan has me scheduled to cover the message path in a session there where we'll discuss effective use of libraries, frontScripts, and backScripts too.

--
 Richard Gaskin
 Fourth World Media Corporation
 ___________________________________________________________
 [EMAIL PROTECTED]       http://www.FourthWorld.com
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to