Index: webkit/plugins/ppapi/ppb_url_loader_impl.cc |
diff --git a/webkit/plugins/ppapi/ppb_url_loader_impl.cc b/webkit/plugins/ppapi/ppb_url_loader_impl.cc |
index 28a39152c4be94702b09d07f215b9e6383d1de2c..f91d28e787a5ae7214c062214ab60183f8bd5e1d 100644 |
--- a/webkit/plugins/ppapi/ppb_url_loader_impl.cc |
+++ b/webkit/plugins/ppapi/ppb_url_loader_impl.cc |
@@ -85,12 +85,13 @@ PPB_URLLoader_Impl::PPB_URLLoader_Impl(PP_Instance instance, |
} |
PPB_URLLoader_Impl::~PPB_URLLoader_Impl() { |
- // There is a path whereby the destructor for the loader_ member can |
- // invoke InstanceWasDeleted() upon this PPB_URLLoader_Impl, thereby |
- // re-entering the scoped_ptr destructor with the same scoped_ptr object |
- // via loader_.reset(). Be sure that loader_ is first NULL then destroy |
- // the scoped_ptr. See http://crbug.com/159429. |
- scoped_ptr<WebKit::WebURLLoader> for_destruction_only(loader_.release()); |
+ // Removes the resource from the ResourceTracker's tables. This normally |
+ // happens as part of Resource destruction, but if a subclass destructor |
+ // has a risk of re-entering destruction via the ResourceTracker, it can |
+ // call this explicitly to get rid of the table entry before continuing |
+ // with the destruction. If the resource is not in the ResourceTracker's |
+ // tables, silently does nothing. See http://crbug.com/159429. |
+ RemoveFromResourceTracker(); |
} |
PPB_URLLoader_API* PPB_URLLoader_Impl::AsPPB_URLLoader_API() { |