diff --git a/Controller/PBSubmoduleController.m b/Controller/PBSubmoduleController.m index c789778..cd45014 100644 --- a/Controller/PBSubmoduleController.m +++ b/Controller/PBSubmoduleController.m @@ -42,7 +42,8 @@ if ([submoduleLine length] == 0) continue; PBGitSubmodule *submodule = [[PBGitSubmodule alloc] initWithRawSubmoduleStatusString:submoduleLine]; - [loadedSubmodules addObject:submodule]; + if (submodule) + [loadedSubmodules addObject:submodule]; } NSMutableArray *groupedSubmodules = [[NSMutableArray alloc] init]; diff --git a/Model/PBGitSubmodule.h b/Model/PBGitSubmodule.h index 5d1db18..88d6789 100644 --- a/Model/PBGitSubmodule.h +++ b/Model/PBGitSubmodule.h @@ -13,6 +13,7 @@ typedef enum { PBGitSubmoduleStateNotInitialized, PBGitSubmoduleStateMatchingIndex, PBGitSubmoduleStateDoesNotMatchIndex, + PBGitSubmoduleStateFailed, } PBGitSubmoduleState; @interface PBGitSubmodule : NSObject { diff --git a/Model/PBGitSubmodule.m b/Model/PBGitSubmodule.m index 3bb6a1b..56b1140 100644 --- a/Model/PBGitSubmodule.m +++ b/Model/PBGitSubmodule.m @@ -35,6 +35,10 @@ if ((self = [super init])) { unichar status = [submoduleStatusString characterAtIndex:0]; submoduleState = [PBGitSubmodule submoduleStateFromCharacter:status]; + if (submoduleState == PBGitSubmoduleStateFailed) { + NSLog(@"Submodule status failed:\n %@", submoduleStatusString); + return nil; + } NSScanner *scanner = [NSScanner scannerWithString:[submoduleStatusString substringFromIndex:1]]; NSString *sha1 = nil; NSString *fullPath = nil; @@ -114,7 +118,7 @@ } else if (character == '+') { state = PBGitSubmoduleStateDoesNotMatchIndex; } else if (character != ' ') { - NSAssert1(NO, @"Ooops unsupported submodule status character: %c", character); + return PBGitSubmoduleStateFailed; } return state;