I think that the trObj method of XMLObjectOutput.as has as problem  
where it keeps doubling the size of its internal __stack variable  
with each new object it has.
The section which has:
         // verify that we have not already seen this object
         if(obj instanceof Array || obj instanceof Function || obj  
instanceof MovieClip || obj instanceof Object)
         {
             var len = __stack.length;
             // walk the stack and look for matches
             for(var i = 0; i < len; i++)
             {
                 if(obj == this  || __stack[i] == obj)
                 {
                     // we have a match, get out
                     var nSpace = "      " + spacer;
                     trace(spacer + " [self reference - will not  
trace]");
                     return;
                 } else {
                     // not found, add it to the list
                     __stack.push(obj);
                 }
             }
         }

seems like it would add the object to the stack each time it iterates  
through the for loop unless the particular object it is searching for  
happens to be the one it is testing in that iteration. This seems to  
be the cause of the problem where the __stack array grows  
geometrically in size.
If you're using this to trace objects with any depth, __stack.length  
very quickly gets up in to the thousands, self reference or not.

Changing that section of code to:
         // verify that we have not already seen this object
         if(obj instanceof Array || obj instanceof Function || obj  
instanceof MovieClip || obj instanceof Object)
         {
             var len = __stack.length;
             // walk the stack and look for matches
             for(var i = 0; i < len; i++)
             {
                 if(obj == this  || __stack[i] == obj)
                 {
                     // we have a match, get out
                     var nSpace = "      " + spacer;
                     trace(spacer + " [self reference - will not  
trace]");
                     return;
                 }
             }
             // not found, add it to the list
             __stack.push(obj);
         }
seems to do the trick, although I wonder if there is a way to do this  
with hash tables instead of iterating through a numbered array?

Is there a way of generating hash codes or using an object reference  
as a key?

Sean McKibben
[EMAIL PROTECTED]



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to