I've found what looks like a memory leak in Async.SendXMLHttpRequest. Here's
the trail I'm following:

req (1st param to SendXMLHttyRequest) is an instance of whatever object is
supplying XMLHttpRequest functionality

d (local var to SendXMLHttyRequest) is set to
Base.partial(Async._xhr_canceller,
req)

So we have
        req

and
        d = anonfunc1
.im_func = Async._xhr_canceller
        anonfunc1.im_preargs[0] = req;

Finally, req.onreadystatechange is set to
Base.bind(Async._xhr_onreadystatechange,
req, d) giving us:

    req.onreadystatechange = anonfunc
    req.onreadystatechange.im_func = Async._xhr_onreadystatechange
    req.onreadystatechange.im_preargs[0] = d
    req.onreadystatechange.im_self = req

The last value is where I believe the leak occurs, because that results in
this loop:
    req.onreadystatechange.im_preargs[0].anonfunc.im_preargs[0] = req

When Async._xhr_canceller or Async._xhr_onreadystatechange are called, they
set req.onreadystatechange to null. Leaving this:
    anonfunc
However, I cannot find anywhere that this loop is broken if the request
succeeds. The leak detector extension (
http://dbaron.org/mozilla/leak-monitor/) seems to back this up as I get 1
reported leak for every XMLHttpRequest I make.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MochiKit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/mochikit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to