diff -r e98460f6089d -r d126a0d16856 mercurial/mpatch.c --- a/mercurial/mpatch.c Fri Apr 13 10:08:08 2012 +0200 +++ b/mercurial/mpatch.c Mon Apr 16 11:26:00 2012 -0500 @@ -202,7 +202,6 @@ struct flist *l; struct frag *lt; const char *data = bin + 12, *end = bin + len; - 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); @@ -212,10 +211,9 @@ lt = l->tail; while (data <= end) { - memcpy(decode, bin, 12); - lt->start = ntohl(decode[0]); - lt->end = ntohl(decode[1]); - lt->len = ntohl(decode[2]); + lt->start = getbe32(bin); + lt->end = getbe32(bin + 4); + lt->len = getbe32(bin + 8); if (lt->start > lt->end) break; /* sanity check */ bin = data + lt->len; @@ -361,7 +359,6 @@ long orig, start, end, len, outlen = 0, last = 0; int patchlen; char *bin, *binend, *data; - uint32_t decode[3]; /* for dealing with alignment issues */ if (!PyArg_ParseTuple(args, "ls#", &orig, &bin, &patchlen)) return NULL; @@ -370,10 +367,9 @@ data = bin + 12; while (data <= binend) { - memcpy(decode, bin, 12); - start = ntohl(decode[0]); - end = ntohl(decode[1]); - len = ntohl(decode[2]); + start = getbe32(bin); + end = getbe32(bin + 4); + len = getbe32(bin + 8); if (start > end) break; /* sanity check */ bin = data + len;