X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=diffcore-order.c;h=23e93852d8c701760d56e7e728dba7c08367fbe8;hb=8702fee6171abb2e353499fa0cecba90ad5f277f;hp=7ad09461858aa6832b828df411fd1b736f035465;hpb=eec102524fda2df7d2846e865805ca213119bf10;p=git.git diff --git a/diffcore-order.c b/diffcore-order.c index 7ad094618..23e93852d 100644 --- a/diffcore-order.c +++ b/diffcore-order.c @@ -14,6 +14,7 @@ static void prepare_order(const char *orderfile) void *map; char *cp, *endp; struct stat st; + size_t sz; if (order) return; @@ -25,11 +26,12 @@ static void prepare_order(const char *orderfile) close(fd); return; } - map = mmap(NULL, st.st_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + sz = xsize_t(st.st_size); + map = mmap(NULL, sz, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); close(fd); if (map == MAP_FAILED) return; - endp = (char *) map + st.st_size; + endp = (char *) map + sz; for (pass = 0; pass < 2; pass++) { cnt = 0; cp = map; @@ -46,11 +48,8 @@ static void prepare_order(const char *orderfile) if (*ep == '\n') { *ep = 0; order[cnt] = cp; - } - else { - order[cnt] = xmalloc(ep-cp+1); - memcpy(order[cnt], cp, ep-cp); - order[cnt][ep-cp] = 0; + } else { + order[cnt] = xmemdupz(cp, ep - cp); } cnt++; }