marcoarment / FCModel

An alternative to Core Data for people who like having direct SQL access.
MIT License
1.65k stars 173 forks source link

FCModel.m unique key generation fail #151

Open Paberu85 opened 6 years ago

Paberu85 commented 6 years ago

For the while and do...while loops, continue statement causes the program control pass to the conditional test - 'conflict' which is initialized to NO and never changed elsewhere.

                    BOOL conflict = NO;
                    int attempts = 0;
                    do {
                        attempts++;
                        NSAssert1(attempts < 100, @"FCModel subclass %@ is not returning usable, unique values from primaryKeyValueForNewInstance", NSStringFromClass(self.class));

                        id newKeyValue = [self.class primaryKeyValueForNewInstance];
                        if ([self.class instanceFromDatabaseWithPrimaryKey:newKeyValue]) continue; // already exists in database
                        [self setValue:newKeyValue forKey:key];
                    } while (conflict);
Paberu85 commented 5 years ago

As repo is alive and I see you'r ignoring this bug from commit to commit, try running this peace of code, maybe that will convince you to fix it and save anyone else from hassle of finding out why app crashes in production environment due to sqlite unique pk constraint with large amount of records.

BOOL conflict = NO;
do {
    continue;
} while (conflict);