From d28b17c87f6d7b165521f8274c3a3bb9b2420514 Mon Sep 17 00:00:00 2001 From: Michael Schneider Date: Tue, 3 Jul 2018 08:39:49 -0700 Subject: [PATCH] Fix warnings and memory issues (#1003) --- Source/ASCGImageBuffer.h | 2 +- Source/ASRunLoopQueue.mm | 5 +++-- Source/ASTextNode2.mm | 4 +++- Source/Details/ASCollectionFlowLayoutDelegate.m | 2 +- Source/Private/TextExperiment/Component/ASTextLayout.m | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Source/ASCGImageBuffer.h b/Source/ASCGImageBuffer.h index 88f1fd9c3e..dfff516812 100644 --- a/Source/ASCGImageBuffer.h +++ b/Source/ASCGImageBuffer.h @@ -25,7 +25,7 @@ AS_SUBCLASSING_RESTRICTED @property (readonly) void *mutableBytes NS_RETURNS_INNER_POINTER; /// Don't do any drawing or call any methods after calling this. -- (CGDataProviderRef)createDataProviderAndInvalidate; +- (CGDataProviderRef)createDataProviderAndInvalidate CF_RETURNS_RETAINED; @end diff --git a/Source/ASRunLoopQueue.mm b/Source/ASRunLoopQueue.mm index fd7b39fd41..c14eccac51 100644 --- a/Source/ASRunLoopQueue.mm +++ b/Source/ASRunLoopQueue.mm @@ -101,7 +101,7 @@ static void runLoopSourceCallback(void *info) { return; } // The scope below is entered while already locked. @autorelease is crucial here; see PR 2890. - NSInteger count; + __unused NSInteger count; // Prevent static analyzer warning if release build @autoreleasepool { #if ASRunLoopQueueLoggingEnabled NSLog(@"ASDeallocQueue Processing: %lu objects destroyed", weakSelf->_queue.size()); @@ -281,7 +281,8 @@ typedef enum { - (instancetype)init { - if (self != [super init]) { + self = [super init]; + if (self == nil) { return nil; } ASDisplayNodeAssert(self.class != [ASAbstractRunLoopQueue class], @"Should never create instances of abstract class ASAbstractRunLoopQueue."); diff --git a/Source/ASTextNode2.mm b/Source/ASTextNode2.mm index 6f97fa6c7e..d0513d6168 100644 --- a/Source/ASTextNode2.mm +++ b/Source/ASTextNode2.mm @@ -346,7 +346,9 @@ static NSArray *DefaultLinkAttributeNames = @[ NSLinkAttributeName ]; if (_shadowOpacity > 0 && (_shadowRadius != 0 || !CGSizeEqualToSize(_shadowOffset, CGSizeZero)) && CGColorGetAlpha(_shadowColor) > 0) { NSShadow *shadow = [[NSShadow alloc] init]; if (_shadowOpacity != 1) { - shadow.shadowColor = [UIColor colorWithCGColor:CGColorCreateCopyWithAlpha(_shadowColor, _shadowOpacity * CGColorGetAlpha(_shadowColor))]; + CGColorRef shadowColorRef = CGColorCreateCopyWithAlpha(_shadowColor, _shadowOpacity * CGColorGetAlpha(_shadowColor)); + shadow.shadowColor = [UIColor colorWithCGColor:shadowColorRef]; + CGColorRelease(shadowColorRef); } else { shadow.shadowColor = [UIColor colorWithCGColor:_shadowColor]; } diff --git a/Source/Details/ASCollectionFlowLayoutDelegate.m b/Source/Details/ASCollectionFlowLayoutDelegate.m index 706ee9c872..cbcdbe048d 100644 --- a/Source/Details/ASCollectionFlowLayoutDelegate.m +++ b/Source/Details/ASCollectionFlowLayoutDelegate.m @@ -60,7 +60,7 @@ + (ASCollectionLayoutState *)calculateLayoutWithContext:(ASCollectionLayoutContext *)context { ASElementMap *elements = context.elements; - NSMutableArray *children = ASArrayByFlatMapping(elements.itemElements, ASCollectionElement *element, element.node); + NSArray *children = ASArrayByFlatMapping(elements.itemElements, ASCollectionElement *element, element.node); if (children.count == 0) { return [[ASCollectionLayoutState alloc] initWithContext:context]; } diff --git a/Source/Private/TextExperiment/Component/ASTextLayout.m b/Source/Private/TextExperiment/Component/ASTextLayout.m index 2f475908b8..d0aceee9ac 100755 --- a/Source/Private/TextExperiment/Component/ASTextLayout.m +++ b/Source/Private/TextExperiment/Component/ASTextLayout.m @@ -1959,7 +1959,7 @@ dispatch_semaphore_signal(_lock); range = [self _correctedRangeWithEdge:range]; BOOL isVertical = _container.verticalForm; - NSMutableArray *rects = [[NSMutableArray alloc] init]; + NSMutableArray *rects = [[NSMutableArray alloc] init]; if (!range) return rects; NSUInteger startLineIndex = [self lineIndexForPosition:range.start];