@@ -142,7 +142,7 @@ + (NSDictionary *)getCurrentPackage:(NSError **)error
142142 NSString *folderPath = [CodePushPackage getCurrentPackageFolderPath: error];
143143 if (!*error) {
144144 if (!folderPath) {
145- return [ NSDictionary dictionary ] ;
145+ return nil ;
146146 }
147147
148148 NSString *packagePath = [folderPath stringByAppendingPathComponent: @" app.json" ];
@@ -159,7 +159,7 @@ + (NSDictionary *)getCurrentPackage:(NSError **)error
159159 }
160160 }
161161
162- return NULL ;
162+ return nil ;
163163}
164164
165165+ (NSDictionary *)getPackage : (NSString *)packageHash
@@ -204,10 +204,15 @@ + (void)downloadPackage:(NSDictionary *)updatePackage
204204 failCallback : (void (^)(NSError *err))failCallback
205205{
206206 NSString *newPackageFolderPath = [self getPackageFolderPath: updatePackage[@" packageHash" ]];
207- NSError *error = nil ;
207+ NSError *error;
208208
209- if (![[NSFileManager defaultManager ] fileExistsAtPath: newPackageFolderPath]) {
210- [[NSFileManager defaultManager ] createDirectoryAtPath: newPackageFolderPath
209+ if ([[NSFileManager defaultManager ] fileExistsAtPath: newPackageFolderPath]) {
210+ // This removes any stale data in newPackageFolderPath that could have been left
211+ // uncleared due to a crash or error during the download or install process.
212+ [[NSFileManager defaultManager ] removeItemAtPath: newPackageFolderPath
213+ error: &error];
214+ } else if (![[NSFileManager defaultManager ] fileExistsAtPath: [self getCodePushPath ]]) {
215+ [[NSFileManager defaultManager ] createDirectoryAtPath: [self getCodePushPath ]
211216 withIntermediateDirectories: YES
212217 attributes: nil
213218 error: &error];
@@ -259,9 +264,9 @@ + (void)downloadPackage:(NSDictionary *)updatePackage
259264 return ;
260265 }
261266
262- [CodePushPackage copyEntriesInFolder : currentPackageFolderPath
263- destFolder : newPackageFolderPath
264- error: &error];
267+ [[ NSFileManager defaultManager ] copyItemAtPath : currentPackageFolderPath
268+ toPath : newPackageFolderPath
269+ error: &error];
265270 if (error) {
266271 failCallback (error);
267272 return ;
0 commit comments