RESOLVED FIXED 35157
Remove auto_ptr usage in WebCore
https://bugs.webkit.org/show_bug.cgi?id=35157
Summary Remove auto_ptr usage in WebCore
Julien Chaffraix
Reported 2010-02-19 07:50:49 PST
Since PassOwnPtr was introduced, we can switch all the code using auto_ptr to using OwnPtr / PassOwnPtr. Patch forthcoming.
Attachments
Proposed fix: change signatures, remove <memory> and auto_ptr reference (24.96 KB, patch)
2010-02-19 07:55 PST, Julien Chaffraix
eric: review+
jchaffraix: commit-queue-
Julien Chaffraix
Comment 1 2010-02-19 07:55:24 PST
Created attachment 49079 [details] Proposed fix: change signatures, remove <memory> and auto_ptr reference
Eric Seidel (no email)
Comment 2 2010-02-19 12:41:01 PST
Comment on attachment 49079 [details] Proposed fix: change signatures, remove <memory> and auto_ptr reference LGTM. My only concern is if "Type" could end up getting used for a stack object. We only use PassOwnPtr to return or pass values, never as a stack object or an instance variable. 05 template<> struct CrossThreadCopierBase<false, false, ResourceRequest> { 115 typedef std::auto_ptr<CrossThreadResourceRequestData> Type; 106 typedef PassOwnPtr<CrossThreadResourceRequestData> Type; 116107 static Type copy(const ResourceRequest&); 117108 }; 118109 119110 template<> struct CrossThreadCopierBase<false, false, ResourceResponse> { 120 typedef std::auto_ptr<CrossThreadResourceResponseData> Type; 111 typedef PassOwnPtr<CrossThreadResourceResponseData> Type; 121112 static Type copy(const ResourceResponse&); 122113 };
Julien Chaffraix
Comment 3 2010-02-21 15:36:33 PST
(In reply to comment #2) > (From update of attachment 49079 [details]) > LGTM. > > My only concern is if "Type" could end up getting used for a stack object. We > only use PassOwnPtr to return or pass values, never as a stack object or an > instance variable. [snip] Looking at the auto_ptr and PassOwnPtr implementation, there is no constructor for stack allocated object. The constructor takes a pointer type: template <typename T> class PassOwnPtr { typedef typename RemovePointer<T>::Type ValueType; typedef ValueType* PtrType; PassOwnPtr(PtrType ptr = 0) : m_ptr(ptr) { } } So unless I miss something, using a stack object will be detected at compile time. Thanks for the review!
Julien Chaffraix
Comment 4 2010-02-21 15:51:54 PST
Landed the patch in r55066. Follow-up change in bug 35221 (for JavaScriptCore).
Note You need to log in before you can comment on or make changes to this bug.