From 18fc03580776f1b25c40925fe45be50bb3138bec Mon Sep 17 00:00:00 2001 From: Geoffrey Goh Date: Sat, 27 Aug 2016 18:11:43 -0700 Subject: [PATCH] prevent crashes during rollbacks --- ios/CodePush/CodePush.m | 9 ++++++--- ios/CodePush/CodePushPackage.m | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ios/CodePush/CodePush.m b/ios/CodePush/CodePush.m index b170884..6d2a276 100644 --- a/ios/CodePush/CodePush.m +++ b/ios/CodePush/CodePush.m @@ -455,9 +455,12 @@ static NSString *bundleResourceSubdirectory = nil; { NSError *error; NSDictionary *failedPackage = [CodePushPackage getCurrentPackage:&error]; - - // Write the current package's metadata to the "failed list" - [self saveFailedUpdate:failedPackage]; + if (error) { + CPLog(@"Error getting current update metadata during rollback: %@", error); + } else if (failedPackage) { + // Write the current package's metadata to the "failed list" + [self saveFailedUpdate:failedPackage]; + } // Rollback to the previous version and de-register the new update [CodePushPackage rollbackPackage]; diff --git a/ios/CodePush/CodePushPackage.m b/ios/CodePush/CodePushPackage.m index 4d45fb9..6db7d2e 100644 --- a/ios/CodePush/CodePushPackage.m +++ b/ios/CodePush/CodePushPackage.m @@ -491,11 +491,13 @@ static NSString *const UnzippedFolderName = @"unzipped"; NSError *error; NSMutableDictionary *info = [self getCurrentPackageInfo:&error]; if (error) { + CPLog(@"Error getting current package info: %@", error); return; } NSString *currentPackageFolderPath = [self getCurrentPackageFolderPath:&error]; if (error) { + CPLog(@"Error getting current package folder path: %@", error); return; } @@ -515,11 +517,9 @@ static NSString *const UnzippedFolderName = @"unzipped"; + (void)updateCurrentPackageInfo:(NSDictionary *)packageInfo error:(NSError **)error { - NSData *packageInfoData = [NSJSONSerialization dataWithJSONObject:packageInfo options:0 error:error]; - NSString *packageInfoString = [[NSString alloc] initWithData:packageInfoData encoding:NSUTF8StringEncoding]; [packageInfoString writeToFile:[self getStatusFilePath]