From dd998b086fe66ce75e50ceec70744bb912667f88 Mon Sep 17 00:00:00 2001 From: Garrett Moon Date: Fri, 15 Apr 2016 10:31:43 -0700 Subject: [PATCH] I think this needs a lock. Summary: Looks like this isn't being locked when it should be. Reviewers: ricky, levi, scottg, schneider Reviewed By: scottg, schneider Subscribers: jenkins Differential Revision: https://phabricator.pinadmin.com/D84952 --- AsyncDisplayKit/TextKit/ASTextKitContext.mm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/AsyncDisplayKit/TextKit/ASTextKitContext.mm b/AsyncDisplayKit/TextKit/ASTextKitContext.mm index b9925d4f7e..13a4f1ecee 100755 --- a/AsyncDisplayKit/TextKit/ASTextKitContext.mm +++ b/AsyncDisplayKit/TextKit/ASTextKitContext.mm @@ -8,16 +8,15 @@ * */ -#import - #import "ASTextKitContext.h" +#import "ASThread.h" #import "ASLayoutManager.h" @implementation ASTextKitContext { // All TextKit operations (even non-mutative ones) must be executed serially. - std::mutex _textKitMutex; + ASDN::Mutex _textKitMutex; NSLayoutManager *_layoutManager; NSTextStorage *_textStorage; @@ -36,8 +35,8 @@ { if (self = [super init]) { // Concurrently initialising TextKit components crashes (rdar://18448377) so we use a global lock. - static std::mutex __static_mutex; - std::lock_guard l(__static_mutex); + static ASDN::Mutex __staticMutex; + ASDN::MutexLocker l(__staticMutex); // Create the TextKit component stack with our default configuration. if (textStorageCreationBlock) { _textStorage = textStorageCreationBlock(attributedString); @@ -61,11 +60,13 @@ - (CGSize)constrainedSize { + ASDN::MutexLocker l(_textKitMutex); return _textContainer.size; } - (void)setConstrainedSize:(CGSize)constrainedSize { + ASDN::MutexLocker l(_textKitMutex); _textContainer.size = constrainedSize; } @@ -73,7 +74,7 @@ NSTextStorage *, NSTextContainer *))block { - std::lock_guard l(_textKitMutex); + ASDN::MutexLocker l(_textKitMutex); block(_layoutManager, _textStorage, _textContainer); }