diff options
author | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-18 17:25:00 +0000 |
---|---|---|
committer | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-18 17:25:00 +0000 |
commit | 253b073edfdab221f0c71caf5c92759705d04170 (patch) | |
tree | 261f0adf11d8a5c7405dab7524382650c9bc8136 | |
parent | 3375579bb68c22ad488a0a3ccc36b3ad1b5b6833 (diff) | |
download | chromium_src-253b073edfdab221f0c71caf5c92759705d04170.zip chromium_src-253b073edfdab221f0c71caf5c92759705d04170.tar.gz chromium_src-253b073edfdab221f0c71caf5c92759705d04170.tar.bz2 |
[Mac] Try to fix zombie -mouseMoved: message.
ScopedTrackingArea added code to automagically break forwarding for
tracking areas to prevent use-after-free messages. In
BookmarkBarFolderController, the pointer was cleared before this code
could kick in. Call it manually.
BUG=78756
TEST=crash server.
Review URL: http://codereview.chromium.org/6875014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81961 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm | 1 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/tracking_area.h | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm index 97d600b..ba14668 100644 --- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm +++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_folder_controller.mm @@ -1002,6 +1002,7 @@ struct LayoutMetrics { - (void)removeScrollTracking { if (scrollTrackingArea_.get()) { [[[self window] contentView] removeTrackingArea:scrollTrackingArea_.get()]; + [scrollTrackingArea_.get() clearOwner]; } scrollTrackingArea_.reset(); } diff --git a/chrome/browser/ui/cocoa/tracking_area.h b/chrome/browser/ui/cocoa/tracking_area.h index a32ca03..b044e4d 100644 --- a/chrome/browser/ui/cocoa/tracking_area.h +++ b/chrome/browser/ui/cocoa/tracking_area.h @@ -52,6 +52,7 @@ class ScopedCrTrackingArea { ~ScopedCrTrackingArea(); // This will call |scoped_nsobject<>::reset()| to take ownership of the new + // tracking area. Note that -clearOwner is NOT called on the existing // tracking area. void reset(CrTrackingArea* tracking_area = nil); |