equal
deleted
inserted
replaced
965 * Callers must ensure that rev >= 0 or illegal memory access may occur. |
965 * Callers must ensure that rev >= 0 or illegal memory access may occur. |
966 */ |
966 */ |
967 static inline int index_baserev(indexObject *self, int rev) |
967 static inline int index_baserev(indexObject *self, int rev) |
968 { |
968 { |
969 const char *data; |
969 const char *data; |
|
970 int result; |
970 |
971 |
971 if (rev >= self->length) { |
972 if (rev >= self->length) { |
972 PyObject *tuple = |
973 PyObject *tuple = |
973 PyList_GET_ITEM(self->added, rev - self->length); |
974 PyList_GET_ITEM(self->added, rev - self->length); |
974 long ret; |
975 long ret; |
975 if (!pylong_to_long(PyTuple_GET_ITEM(tuple, 3), &ret)) { |
976 if (!pylong_to_long(PyTuple_GET_ITEM(tuple, 3), &ret)) { |
976 return -2; |
977 return -2; |
977 } |
978 } |
978 return (int)ret; |
979 result = (int)ret; |
979 } else { |
980 } else { |
980 data = index_deref(self, rev); |
981 data = index_deref(self, rev); |
981 if (data == NULL) { |
982 if (data == NULL) { |
982 return -2; |
983 return -2; |
983 } |
984 } |
984 |
985 |
985 return getbe32(data + 16); |
986 result = getbe32(data + 16); |
986 } |
987 } |
|
988 if (result > rev) { |
|
989 PyErr_Format( |
|
990 PyExc_ValueError, |
|
991 "corrupted revlog, revision base above revision: %d, %d", |
|
992 rev, result); |
|
993 return -2; |
|
994 } |
|
995 return result; |
987 } |
996 } |
988 |
997 |
989 static PyObject *index_deltachain(indexObject *self, PyObject *args) |
998 static PyObject *index_deltachain(indexObject *self, PyObject *args) |
990 { |
999 { |
991 int rev, generaldelta; |
1000 int rev, generaldelta; |