Mercurial > hg
changeset 15034:72f312f41a4a
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 10 Aug 2011 13:52:52 -0500 |
parents | 0cb27eda3a1e (current diff) 2ef2d3a5cd2d (diff) |
children | cc669e4fec95 |
files | |
diffstat | 3 files changed, 26 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/graphlog.py Sat Aug 06 23:52:20 2011 +0200 +++ b/hgext/graphlog.py Wed Aug 10 13:52:52 2011 -0500 @@ -95,6 +95,8 @@ elif start == end: interline[2 * start] = "|" else: + if 2 * end >= len(nodeline): + continue nodeline[2 * end] = "+" if start > end: (start, end) = (end, start)
--- a/mercurial/mpatch.c Sat Aug 06 23:52:20 2011 +0200 +++ b/mercurial/mpatch.c Wed Aug 10 13:52:52 2011 -0500 @@ -238,7 +238,7 @@ struct flist *l; struct frag *lt; const char *data = bin + 12, *end = bin + len; - char decode[12]; /* for dealing with alignment issues */ + uint32_t decode[3]; /* for dealing with alignment issues */ /* assume worst case size, we won't have many of these lists */ l = lalloc(len / 12); @@ -249,9 +249,9 @@ while (data <= end) { memcpy(decode, bin, 12); - lt->start = ntohl(*(uint32_t *)decode); - lt->end = ntohl(*(uint32_t *)(decode + 4)); - lt->len = ntohl(*(uint32_t *)(decode + 8)); + lt->start = ntohl(decode[0]); + lt->end = ntohl(decode[1]); + lt->len = ntohl(decode[2]); if (lt->start > lt->end) break; /* sanity check */ bin = data + lt->len; @@ -397,7 +397,7 @@ long orig, start, end, len, outlen = 0, last = 0; int patchlen; char *bin, *binend, *data; - char decode[12]; /* for dealing with alignment issues */ + uint32_t decode[3]; /* for dealing with alignment issues */ if (!PyArg_ParseTuple(args, "ls#", &orig, &bin, &patchlen)) return NULL; @@ -407,9 +407,9 @@ while (data <= binend) { memcpy(decode, bin, 12); - start = ntohl(*(uint32_t *)decode); - end = ntohl(*(uint32_t *)(decode + 4)); - len = ntohl(*(uint32_t *)(decode + 8)); + start = ntohl(decode[0]); + end = ntohl(decode[1]); + len = ntohl(decode[2]); if (start > end) break; /* sanity check */ bin = data + len;
--- a/mercurial/parsers.c Sat Aug 06 23:52:20 2011 +0200 +++ b/mercurial/parsers.c Wed Aug 10 13:52:52 2011 -0500 @@ -170,7 +170,7 @@ int state, mode, size, mtime; unsigned int flen; int len; - char decode[16]; /* for alignment */ + uint32_t decode[4]; /* for alignment */ if (!PyArg_ParseTuple(args, "O!O!s#:parse_dirstate", &PyDict_Type, &dmap, @@ -194,10 +194,10 @@ /* unpack header */ state = *cur; memcpy(decode, cur + 1, 16); - mode = ntohl(*(uint32_t *)(decode)); - size = ntohl(*(uint32_t *)(decode + 4)); - mtime = ntohl(*(uint32_t *)(decode + 8)); - flen = ntohl(*(uint32_t *)(decode + 12)); + mode = ntohl(decode[0]); + size = ntohl(decode[1]); + mtime = ntohl(decode[2]); + flen = ntohl(decode[3]); cur += 17; if (cur + flen > end || cur + flen < cur) { PyErr_SetString(PyExc_ValueError, "overflow in dirstate"); @@ -264,27 +264,27 @@ int comp_len, uncomp_len, base_rev, link_rev, parent_1, parent_2; const char *c_node_id; const char *end = data + size; - char decode[64]; /* to enforce alignment with inline data */ + uint32_t decode[8]; /* to enforce alignment with inline data */ while (data < end) { unsigned int step; - memcpy(decode, data, 64); - offset_flags = ntohl(*((uint32_t *) (decode + 4))); + memcpy(decode, data, 32); + offset_flags = ntohl(decode[1]); if (n == 0) /* mask out version number for the first entry */ offset_flags &= 0xFFFF; else { - uint32_t offset_high = ntohl(*((uint32_t *)decode)); + uint32_t offset_high = ntohl(decode[0]); offset_flags |= ((uint64_t)offset_high) << 32; } - comp_len = ntohl(*((uint32_t *)(decode + 8))); - uncomp_len = ntohl(*((uint32_t *)(decode + 12))); - base_rev = ntohl(*((uint32_t *)(decode + 16))); - link_rev = ntohl(*((uint32_t *)(decode + 20))); - parent_1 = ntohl(*((uint32_t *)(decode + 24))); - parent_2 = ntohl(*((uint32_t *)(decode + 28))); - c_node_id = decode + 32; + comp_len = ntohl(decode[2]); + uncomp_len = ntohl(decode[3]); + base_rev = ntohl(decode[4]); + link_rev = ntohl(decode[5]); + parent_1 = ntohl(decode[6]); + parent_2 = ntohl(decode[7]); + c_node_id = data + 32; entry = Py_BuildValue("Liiiiiis#", offset_flags, comp_len, uncomp_len, base_rev, link_rev,