[PATCH 1/8] riched20: Stub for ITextRange interface and implement ITextDocument::Range. (resend try 4)

Jactry Zeng jactry92 at gmail.com
Fri Sep 12 04:32:19 CDT 2014


Hi Huw,

This is a newer version:
static HRESULT CreateITextRange(IRichEditOle *reOle, LONG start, LONG end,
                                ITextRangeImpl *txtRge, ITextRange**
ppRange)
{
    IRichEditOleImpl *reOleImpl = impl_from_IRichEditOle(reOle);

    txtRge->ITextRange_iface.lpVtbl = &trvt;
    txtRge->ref = 1;
    IRichEditOle_AddRef(reOle);
    txtRge->reOle = reOleImpl;
    txtRge->start = start;
    txtRge->end = end;
    list_add_head(&reOleImpl->rangelist, &txtRge->entry);
    *ppRange = &txtRge->ITextRange_iface;
    return S_OK;
}

I will prefer passing ITextRangeImpl into CreateITextRange instead of
ITextRange interface.
So we don't need to impl_from_ITextRange again. Is it also ok?

btw, I didn't alloc txtRge (txtRge = heap_alloc(sizeof(ITextRangeImpl));)
in CreateITextRange(),
because CreateITextRange() was just created for sharing code with
ITextRange::GetDuplicate and GetDuplicate
will return E_FAIL for all any other error[0] when ITextDocument::Range
returning E_OUTOFMEMORY.[1]

Thanks.

[0]
http://msdn.microsoft.com/en-us/library/windows/desktop/bb787840(v=vs.85).aspx
[1]
http://msdn.microsoft.com/en-us/library/windows/desktop/bb774097(v=vs.85).aspx

2014-09-12 15:53 GMT+08:00 Huw Davies <huw at codeweavers.com>:

> On Fri, Sep 12, 2014 at 10:47:44AM +0800, Jactry Zeng wrote:
> >
> > 2014-09-12 4:43 GMT+08:00 Sebastian Lackner <sebastian at fds-team.de>:
> > >
> > >
> > > Are you sure? Doesn't this test below show exactly the opposite? It
> seems to
> > be safe
> > > to release the ITextDocument, and afterwards call an ITextRange
> function - it
> > will just
> > > return CO_E_RELEASED since the parent object was already released. Or
> am I
> > misunderstanding
> > > this code?
> >
> > So sorry, I made a mistake yesterday here. I added more a
> ITextRange::Release
> > before the ITextRange calling
> > in my new tests code yesterday.
> > Functions of ITextRange will return CO_E_RELEASED after reOle/txtDoc were
> > released and will
> > crash after the ITextRange was released.
>
> In that case let's go with your proposed implementation.
>
> Huw.
>



-- 
Regards,
Jactry Zeng
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20140912/7b5a3d71/attachment.html>


More information about the wine-devel mailing list