mercurial/cext/revlog.c
changeset 40861 b12700dd261f
parent 40860 18a8def6e1b5
child 40862 54a60968f0aa
equal deleted inserted replaced
40860:18a8def6e1b5 40861:b12700dd261f
   190 	if (ps[0] < -1 || ps[0] > maxrev || ps[1] < -1 || ps[1] > maxrev) {
   190 	if (ps[0] < -1 || ps[0] > maxrev || ps[1] < -1 || ps[1] > maxrev) {
   191 		PyErr_SetString(PyExc_ValueError, "parent out of range");
   191 		PyErr_SetString(PyExc_ValueError, "parent out of range");
   192 		return -1;
   192 		return -1;
   193 	}
   193 	}
   194 	return 0;
   194 	return 0;
       
   195 }
       
   196 
       
   197 /*
       
   198  * Get parents of the given rev.
       
   199  *
       
   200  * If the specified rev is out of range, IndexError will be raised. If the
       
   201  * revlog entry is corrupted, ValueError may be raised.
       
   202  *
       
   203  * Returns 0 on success or -1 on failure.
       
   204  */
       
   205 int HgRevlogIndex_GetParents(PyObject *op, int rev, int *ps)
       
   206 {
       
   207 	int tiprev;
       
   208 	if (!op || !HgRevlogIndex_Check(op) || !ps) {
       
   209 		PyErr_BadInternalCall();
       
   210 		return -1;
       
   211 	}
       
   212 	tiprev = (int)index_length((indexObject *)op) - 1;
       
   213 	if (rev < -1 || rev > tiprev) {
       
   214 		PyErr_Format(PyExc_IndexError, "rev out of range: %d", rev);
       
   215 		return -1;
       
   216 	} else if (rev == -1) {
       
   217 		ps[0] = ps[1] = -1;
       
   218 		return 0;
       
   219 	} else {
       
   220 		return index_get_parents((indexObject *)op, rev, ps, tiprev);
       
   221 	}
   195 }
   222 }
   196 
   223 
   197 static inline int64_t index_get_start(indexObject *self, Py_ssize_t rev)
   224 static inline int64_t index_get_start(indexObject *self, Py_ssize_t rev)
   198 {
   225 {
   199 	uint64_t offset;
   226 	uint64_t offset;