mercurial/parsers.c
changeset 20555 4add43865a9b
parent 20554 24e0661e6c2e
child 20742 3681de20b0a7
equal deleted inserted replaced
20554:24e0661e6c2e 20555:4add43865a9b
  1206 				     int revcount)
  1206 				     int revcount)
  1207 {
  1207 {
  1208 	const bitmask allseen = (1ull << revcount) - 1;
  1208 	const bitmask allseen = (1ull << revcount) - 1;
  1209 	const bitmask poison = 1ull << revcount;
  1209 	const bitmask poison = 1ull << revcount;
  1210 	PyObject *gca = PyList_New(0);
  1210 	PyObject *gca = PyList_New(0);
  1211 	int i, v, interesting, left;
  1211 	int i, v, interesting;
  1212 	int maxrev = -1;
  1212 	int maxrev = -1;
  1213 	long sp;
  1213 	long sp;
  1214 	bitmask *seen;
  1214 	bitmask *seen;
  1215 
  1215 
  1216 	if (gca == NULL)
  1216 	if (gca == NULL)
  1228 	}
  1228 	}
  1229 
  1229 
  1230 	for (i = 0; i < revcount; i++)
  1230 	for (i = 0; i < revcount; i++)
  1231 		seen[revs[i]] = 1ull << i;
  1231 		seen[revs[i]] = 1ull << i;
  1232 
  1232 
  1233 	interesting = left = revcount;
  1233 	interesting = revcount;
  1234 
  1234 
  1235 	for (v = maxrev; v >= 0 && interesting; v--) {
  1235 	for (v = maxrev; v >= 0 && interesting; v--) {
  1236 		long sv = seen[v];
  1236 		long sv = seen[v];
  1237 		int parents[2];
  1237 		int parents[2];
  1238 
  1238 
  1249 					Py_DECREF(obj);
  1249 					Py_DECREF(obj);
  1250 					goto bail;
  1250 					goto bail;
  1251 				}
  1251 				}
  1252 				sv |= poison;
  1252 				sv |= poison;
  1253 				for (i = 0; i < revcount; i++) {
  1253 				for (i = 0; i < revcount; i++) {
  1254 					if (revs[i] == v) {
  1254 					if (revs[i] == v)
  1255 						if (--left <= 1)
  1255 						goto done;
  1256 							goto done;
       
  1257 						break;
       
  1258 					}
       
  1259 				}
  1256 				}
  1260 			}
  1257 			}
  1261 		}
  1258 		}
  1262 		index_get_parents(self, v, parents);
  1259 		index_get_parents(self, v, parents);
  1263 
  1260