Index: content/browser/manifest/manifest_manager_host.cc |
diff --git a/content/browser/manifest/manifest_manager_host.cc b/content/browser/manifest/manifest_manager_host.cc |
index 962189fff3d86ec5a1773361f66b3e04dea46381..50b3ecade66ca6ab3dd258dc8785787920962c71 100644 |
--- a/content/browser/manifest/manifest_manager_host.cc |
+++ b/content/browser/manifest/manifest_manager_host.cc |
@@ -44,11 +44,14 @@ void ManifestManagerHost::RenderFrameDeleted( |
return; |
// Before deleting the callbacks, make sure they are called with a failure |
- // state. |
- CallbackMap::const_iterator it(callbacks); |
- for (; !it.IsAtEnd(); it.Advance()) |
- it.GetCurrentValue()->Run(Manifest()); |
+ // state. Do this in a block so the iterator is destroyed before |callbacks|. |
+ { |
+ CallbackMap::const_iterator it(callbacks); |
+ for (; !it.IsAtEnd(); it.Advance()) |
+ it.GetCurrentValue()->Run(Manifest()); |
+ } |
+ delete callbacks; |
pending_callbacks_.erase(render_frame_host); |
} |