소스 검색

atomize & document conditions in load() exception list construction

Oswald Buddenhagen 5 년 전
부모
커밋
abdca388f6
1개의 변경된 파일10개의 추가작업 그리고 8개의 파일을 삭제
  1. 10 8
      src/sync.c

+ 10 - 8
src/sync.c

@@ -1310,14 +1310,16 @@ box_opened2( sync_vars_t *svars, int t )
 			for (srec = svars->srecs; srec; srec = srec->next) {
 				if (srec->status & S_DEAD)
 					continue;
-				if (!srec->uid[M])  // No message; other state is irrelevant
-					continue;
-				if (minwuid > srec->uid[M] && (!(svars->opts[M] & OPEN_NEW) || svars->maxuid[M] >= srec->uid[M])) {
-					if (!srec->uid[S] && !(srec->status & S_PENDING))  // Only actually paired up messages matter
-						continue;
-					/* The pair is alive, but outside the bulk range. */
-					*uint_array_append( &mexcs ) = srec->uid[M];
-				}
+				if (!srec->uid[M])
+					continue;  // No message; other state is irrelevant
+				if (srec->uid[M] >= minwuid)
+					continue;  // Message is in non-expired range
+				if ((svars->opts[M] & OPEN_NEW) && srec->uid[M] >= svars->maxuid[M])
+					continue;  // Message is in expired range, but new range overlaps that
+				if (!srec->uid[S] && !(srec->status & S_PENDING))
+					continue;  // Only actually paired up messages matter
+				// The pair is alive, but outside the bulk range
+				*uint_array_append( &mexcs ) = srec->uid[M];
 			}
 			sort_uint_array( mexcs.array );
 		} else {