Mercurial > public > mercurial-scm > hg
comparison mercurial/parsers.c @ 16863:bbedef66c6f3
parsers: replace magic number 64 with symbolic constant
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Fri, 01 Jun 2012 15:19:08 -0700 |
parents | bda96ce993f9 |
children | 92e1c64ba0d4 |
comparison
equal
deleted
inserted
replaced
16862:b6efeb27e733 | 16863:bbedef66c6f3 |
---|---|
274 static char *tuple_format = "Kiiiiiis#"; | 274 static char *tuple_format = "Kiiiiiis#"; |
275 #else | 275 #else |
276 static char *tuple_format = "kiiiiiis#"; | 276 static char *tuple_format = "kiiiiiis#"; |
277 #endif | 277 #endif |
278 | 278 |
279 /* A RevlogNG v1 index entry is 64 bytes long. */ | |
280 static const long v1_hdrsize = 64; | |
281 | |
279 /* | 282 /* |
280 * Return a pointer to the beginning of a RevlogNG record. | 283 * Return a pointer to the beginning of a RevlogNG record. |
281 */ | 284 */ |
282 static const char *index_deref(indexObject *self, Py_ssize_t pos) | 285 static const char *index_deref(indexObject *self, Py_ssize_t pos) |
283 { | 286 { |
290 inline_scan(self, self->offsets); | 293 inline_scan(self, self->offsets); |
291 } | 294 } |
292 return self->offsets[pos]; | 295 return self->offsets[pos]; |
293 } | 296 } |
294 | 297 |
295 return PyString_AS_STRING(self->data) + pos * 64; | 298 return PyString_AS_STRING(self->data) + pos * v1_hdrsize; |
296 } | 299 } |
297 | 300 |
298 /* | 301 /* |
299 * RevlogNG format (all in big endian, data may be inlined): | 302 * RevlogNG format (all in big endian, data may be inlined): |
300 * 6 bytes: offset | 303 * 6 bytes: offset |
1135 */ | 1138 */ |
1136 static long inline_scan(indexObject *self, const char **offsets) | 1139 static long inline_scan(indexObject *self, const char **offsets) |
1137 { | 1140 { |
1138 const char *data = PyString_AS_STRING(self->data); | 1141 const char *data = PyString_AS_STRING(self->data); |
1139 const char *end = data + PyString_GET_SIZE(self->data); | 1142 const char *end = data + PyString_GET_SIZE(self->data); |
1140 const long hdrsize = 64; | 1143 long incr = v1_hdrsize; |
1141 long incr = hdrsize; | |
1142 Py_ssize_t len = 0; | 1144 Py_ssize_t len = 0; |
1143 | 1145 |
1144 while (data + hdrsize <= end) { | 1146 while (data + v1_hdrsize <= end) { |
1145 uint32_t comp_len; | 1147 uint32_t comp_len; |
1146 const char *old_data; | 1148 const char *old_data; |
1147 /* 3rd element of header is length of compressed inline data */ | 1149 /* 3rd element of header is length of compressed inline data */ |
1148 comp_len = getbe32(data + 8); | 1150 comp_len = getbe32(data + 8); |
1149 incr = hdrsize + comp_len; | 1151 incr = v1_hdrsize + comp_len; |
1150 if (incr < hdrsize) | 1152 if (incr < v1_hdrsize) |
1151 break; | 1153 break; |
1152 if (offsets) | 1154 if (offsets) |
1153 offsets[len] = data; | 1155 offsets[len] = data; |
1154 len++; | 1156 len++; |
1155 old_data = data; | 1157 old_data = data; |
1156 data += incr; | 1158 data += incr; |
1157 if (data <= old_data) | 1159 if (data <= old_data) |
1158 break; | 1160 break; |
1159 } | 1161 } |
1160 | 1162 |
1161 if (data != end && data + hdrsize != end) { | 1163 if (data != end && data + v1_hdrsize != end) { |
1162 if (!PyErr_Occurred()) | 1164 if (!PyErr_Occurred()) |
1163 PyErr_SetString(PyExc_ValueError, "corrupt index file"); | 1165 PyErr_SetString(PyExc_ValueError, "corrupt index file"); |
1164 return -1; | 1166 return -1; |
1165 } | 1167 } |
1166 | 1168 |
1199 if (len == -1) | 1201 if (len == -1) |
1200 goto bail; | 1202 goto bail; |
1201 self->raw_length = len; | 1203 self->raw_length = len; |
1202 self->length = len + 1; | 1204 self->length = len + 1; |
1203 } else { | 1205 } else { |
1204 if (size % 64) { | 1206 if (size % v1_hdrsize) { |
1205 PyErr_SetString(PyExc_ValueError, "corrupt index file"); | 1207 PyErr_SetString(PyExc_ValueError, "corrupt index file"); |
1206 goto bail; | 1208 goto bail; |
1207 } | 1209 } |
1208 self->raw_length = size / 64; | 1210 self->raw_length = size / v1_hdrsize; |
1209 self->length = self->raw_length + 1; | 1211 self->length = self->raw_length + 1; |
1210 } | 1212 } |
1211 | 1213 |
1212 return 0; | 1214 return 0; |
1213 bail: | 1215 bail: |