Fix src type=nil NSDictionary crash (#455)

- Use NSNull object in NSDictionary when type (or URI) missing from supplied
  src object.
- In addition, defensively supply valid strings for URI and type from JS.
This commit is contained in:
abrahambotros 2017-01-28 17:46:30 -08:00 committed by Matt Apperson
parent 2b709a5d54
commit 201335f05c
2 changed files with 12 additions and 11 deletions

View File

@ -153,7 +153,7 @@ export default class Video extends Component {
const resizeMode = this.props.resizeMode;
const source = resolveAssetSource(this.props.source) || {};
let uri = source.uri;
let uri = source.uri || '';
if (uri && uri.match(/^\//)) {
uri = `file://${uri}`;
}
@ -180,7 +180,7 @@ export default class Video extends Component {
uri,
isNetwork,
isAsset,
type: source.type,
type: source.type || '',
mainVer: source.mainVer || 0,
patchVer: source.patchVer || 0,
},

View File

@ -277,15 +277,16 @@ static NSString *const playbackRate = @"rate";
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//Perform on next run loop, otherwise onVideoLoadStart is nil
if(self.onVideoLoadStart) {
self.onVideoLoadStart(@{@"src": @{
@"uri": [source objectForKey:@"uri"],
@"type": [source objectForKey:@"type"],
@"isNetwork": [NSNumber numberWithBool:(bool)[source objectForKey:@"isNetwork"]]},
@"target": self.reactTag
});
}
if(self.onVideoLoadStart) {
id uri = [source objectForKey:@"uri"];
id type = [source objectForKey:@"type"];
self.onVideoLoadStart(@{@"src": @{
@"uri": uri ? uri : [NSNull null],
@"type": type ? type : [NSNull null],
@"isNetwork": [NSNumber numberWithBool:(bool)[source objectForKey:@"isNetwork"]]},
@"target": self.reactTag
});
}
});
}