diff --git a/ChangeLog b/ChangeLog index 2c004999f..08e209834 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2008-01-24 Wolfgang Sourdeau + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + +userWithLogin:newLoginroles:newRoles]): test if the user is well + initialized before registering it with the SOGo cache. + ([SOGoUser -initWithLogin:newLoginroles:newRoles]): returns a user + only if the realUID has been found, otherwise we dealloc self and + return nil. + * SoObjects/Appointments/SOGoAppointmentFolder.m: if c_cycleinfo is an NSNull instance, we consider it to be empty and return automatically with an error message in the log. diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index fe0aa2a6a..b0f1c6b71 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -133,8 +133,11 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek"; if (!user) { user = [[self alloc] initWithLogin: newLogin roles: newRoles]; - [user autorelease]; - [cache registerUser: user]; + if (user) + { + [user autorelease]; + [cache registerUser: user]; + } } [user setPrimaryRoles: newRoles]; @@ -173,7 +176,13 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek"; realUID = [[um contactInfosForUserWithUIDorEmail: newLogin] objectForKey: @"c_uid"]; } - self = [super initWithLogin: realUID roles: newRoles]; + if (realUID) + self = [super initWithLogin: realUID roles: newRoles]; + else + { + [self release]; + self = nil; + } return self; }