[webkit-dev] RefPtr/PassRefPtr Question

Maciej Stachowiak mjs at apple.com
Tue Sep 6 18:24:32 PDT 2011


On Aug 31, 2011, at 3:31 PM, David Levin wrote:

> Ignore me. I'm missing the "&".
> 
> I suppose if you want a RefPtr&, then the style checker is wrong and the parameter should be allowed to be a RefPtr.
> 
> Feel free to file a bug and I'll get to it (-- it may take me a week or two at the moment).

It should definitely be allowed - it's a good way to represent "I need a T and I won't take ownership, but I want to guarantee that my caller is holding on to this."

 - Maciej

> 
> dave
> 
> On Wed, Aug 31, 2011 at 3:28 PM, David Levin <levin at google.com> wrote:
> Any of these should work:
> 
> RefPtr<T> myLocal;
> bool success = myFunc(myLocal);
> Uses  template<typename U> PassRefPtr(const RefPtr<U>&);
> 
> Or
> RefPtr<T> myLocal;
> bool success = myFunc(myLocal.release());
> 
> Or
> RefPtr<T> myLocal;
> bool success = myFunc(myLocal.get());
> Uses PassRefPtr(T* ptr)
> 
> The second form is prefered if you won't be using myLocal again in the function. I would use the first form if you are using myLocal again.
> 
> dave
> 
> 
> On Wed, Aug 31, 2011 at 3:16 PM, David Hyatt <hyatt at apple.com> wrote:
> I am getting complaints from check-webkit-style in a bug regarding PassRefPtr/RefPtr usage, and I can't figure out what I should be doing. It yells at me no matter what I try.
> 
> The scenario I have is that a function is wanting to transfer ownership but it's not doing it via a return value. Instead it is filling in a reference parameter.
> 
> The current code looks like this:
> 
> Caller:
> 
> RefPtr<T> myLocal;
> bool success = myFunc(myLocal);
> 
> With the function being:
> 
> bool myFunc(RefPtr<T>& result);
> 
> With this setup though, I get yelled at by the style checker and it tells me that the parameter should be a PassRefPtr. However I don't get how I can do that, since then I have:
> 
> PassRefPtr<T> myLocal;
> 
> and I get yelled at for making a PassRefPtr local variable.
> 
> What's the right way to write this code such that it will pass? Is this just a flaw in the style checker? It sure seems like a RefPtr<T> reference parameter should be allowed...
> 
> dave
> (hyatt at apple.com)
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> 
> 
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20110906/4a8e51c2/attachment.html>


More information about the webkit-dev mailing list