Skip to content

Commit 79b5735

Browse files
Peter Arganyfacebook-github-bot
Peter Argany
authored andcommitted
Fix RCTNullIfNil macro
Summary: `RCTNullIfNil()` can return nil in certain scenarios. Example, given: `#define RCTNullIfNil(value) (value ?: (id)kCFNull)` `RCTNullIfNil(nil == nil ? nil : @"lol")` expanded out `nil == nil ? nil : @"lol" ?: (id)kCFNull` `?:` takes precedence, so reduced: `nil == nil ? nil : @"lol"` `nil` Changelog: [iOS] [Fixed] Fixed longstanding bug where RCTNullIfNil() can return nil Reviewed By: RSNara Differential Revision: D17943530 fbshipit-source-id: 8c6e3dd2d86cbc8ff1fcbef732674835a312ef26
1 parent 474f12e commit 79b5735

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

React/Base/RCTUtils.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ RCT_EXTERN BOOL RCTForceTouchAvailable(void);
9393
RCT_EXTERN NSError *RCTErrorWithMessage(NSString *message);
9494

9595
// Convert nil values to NSNull, and vice-versa
96-
#define RCTNullIfNil(value) (value ?: (id)kCFNull)
96+
#define RCTNullIfNil(value) ((value) ?: (id)kCFNull)
9797
#define RCTNilIfNull(value) \
9898
({ __typeof__(value) t = (value); (id)t == (id)kCFNull ? (__typeof(value))nil : t; })
9999

0 commit comments

Comments
 (0)