Re: Firefox 4 beta 8 -> get_accChild() returns E_INVALIDARG

Alexander Surkov <[email protected]> Tue, 11 Jan 2011 11:06:24 +0800
Newsgroups gmane.comp.mozilla.accessibility
Message-ID <[email protected]>
Hi, Sylvain.

I could suppose beta 6 and beta 8 expose different accessible trees
making your code fail. As David said we need a test case to see what
happens. I don't really think it's trivial as you assumed.

Thank you.
Alex.


On Mon, Jan 10, 2011 at 10:08 PM, Sylvain <[email protected]> wrote:
> Hi all,
>
> This code was OK on beta 6, but fails on beta 8 (not tested on beta
> 7). This code simply tries to get the first child of an object:
>
> hr=AccessibleObjectFromWindow(w,(DWORD)OBJID_CLIENT,IID_IAccessible,
> (void**)&pTopAccessible);
> hr=pTopAccessible->accNavigate(0x1009,vtStart,&vtResult); //
> NAVRELATION_EMBEDS = 0x1009
> pIDispatch=(IDispatch*)vtResult.lVal;
> hr=pIDispatch->QueryInterface(IID_IAccessible, (void**)&pAccessible);
> hr=pAccessible->get_accChildCount(&lCount);
> //  ==> value of lCount is 6 in my example
> vtChild.vt=VT_I4;
> vtChild.lVal=1;
> hr=pAccessible->get_accChild(vtChild,&pIDispatch); => hr=S_OK
> ...
> vtChild.lVal=6;
> hr=pAccessible->get_accChild(vtChild,&pIDispatch); => hr=E_INVALIDARG!
>
> Do you have an idea? Not sure, but I guess there is a bug in the
> Firefox code: I suppose there is a test like this in the
> get_accChild() method:
> if (vtChild.lVal >= lCount) return E_INVALIDARG; // where lCount is
> the number of childs.
> As the childs are 1 based and not 0 based, the right code should be:
> if (vtChild.lVal > lCount) return E_INVALIDARG; // where lCount is the
> number of childs.
>
> Thanks!
>
> Sylvain
> _______________________________________________
> dev-accessibility mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-accessibility
>