Bahadir Balban wrote:
Hi,

I am new to xpcom. I have two mozilla installation environments on
which only one of my mozilla executables work. The other one crashes.
When I follow the function call chain I cannot go any further than the
call:

mStreamListener->OnDataAvailable(request,
                                 NULL,
                                 NS_STATIC_CAST(nsIInputStream *,
this),
                                 mOffset,
                                 aLen);

where, the declarations are:

nsCOMPtr<nsIStreamListener> mStreamListener;
nsCOMPtr<nsIRequest> request;

because I don't know what this call does. How can I follow the
execution flow _within_ this call? Can someone clearly explain what it
does? Where does the execution flow go from here?

Its important because when I get a stack trace for the crashing
executable, I find out that neither of the function calls on the stack
during crash have been called from the working executable. So I need
to know what the working one does within this function call that the
crashing one doesn't do.

Many thanks for your help,
Bahadir

my guess is that mStreamListener is null and that OnDataAvailable is not a static member of that class, thus being a reference from the "non initialized" pointer to that function, which does not exist...


Could also be a mis-stored pointer for mStreamListener which really is not of the type you think it is there.

Otherwise if it crashed inside there it would actually be inside.

Unless nsIInputStream cannot static-cast to "this" (which I dont recall if that can crash you).

note that just doing nsCOMPtr<nsIStreamListener> mStreamListener; does not initialize the class, just declares it as I understand in my dismal actual understand of nsCOMPtr's.

~Justin Wood (Callek on moznet IRC)
_______________________________________________
Mozilla-xpcom mailing list
[email protected]
http://mail.mozilla.org/listinfo/mozilla-xpcom

Reply via email to