Index: chrome/browser/extensions/extension_install_checker.cc |
diff --git a/chrome/browser/extensions/extension_install_checker.cc b/chrome/browser/extensions/extension_install_checker.cc |
index 5aab44d791dbd41ee0fdea06fc7994e40a6599ad..bd02b7100ade59c1cdeb7ee0622f426953d575e9 100644 |
--- a/chrome/browser/extensions/extension_install_checker.cc |
+++ b/chrome/browser/extensions/extension_install_checker.cc |
@@ -163,8 +163,12 @@ void ExtensionInstallChecker::MaybeInvokeCallback() { |
running_checks_ = 0; |
++current_sequence_number_; |
- callback_.Run(failed_mask); |
+ Callback callback_copy = callback_; |
callback_.Reset(); |
+ |
+ // This instance may be owned by the callback recipient and deleted here, |
+ // so reset |callback_| first and invoke a copy of the callback. |
+ callback_copy.Run(failed_mask); |
} |
} |