[PATCH 2 of 2 remotefilelog-ext] remotefilelog: explicitly cast from data_offset_t to (s)size_t
Jun Wu
quark at fb.com
Tue Apr 4 14:56:32 EDT 2017
Pushed. Thanks!
Excerpts from Martin von Zweigbergk's message of 2017-04-04 10:32:34 -0700:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz at google.com>
> # Date 1491327121 25200
> # Tue Apr 04 10:32:01 2017 -0700
> # Node ID 44a00c1d4a66c23e11946e311145ee32bb7a0547
> # Parent c6a91402499e92d3829761521436ead8a42dc2ee
> remotefilelog: explicitly cast from data_offset_t to (s)size_t
>
> data_offset_t is always 64 bits and (s)size_t are sometimes 32 bits.
>
> diff -r c6a91402499e -r 44a00c1d4a66 cstore/uniondatapackstore.cpp
> --- a/cstore/uniondatapackstore.cpp Tue Apr 04 10:25:17 2017 -0700
> +++ b/cstore/uniondatapackstore.cpp Tue Apr 04 10:32:01 2017 -0700
> @@ -36,7 +36,8 @@
> delta_chain_link_t *link = links->at(index);
>
> struct mpatch_flist *res;
> - if ((mpatch_decode((const char*)link->delta, link->delta_sz, &res)) < 0) {
> + if ((mpatch_decode((const char*)link->delta,
> + (ssize_t)link->delta_sz, &res)) < 0) {
> throw std::logic_error("invalid patch during patch application");
> }
>
> @@ -59,8 +60,8 @@
> // Short circuit and just return the full text if it's one long
> if (links.size() == 0) {
> char * finalText = new char[fulltextLink->delta_sz];
> - memcpy(finalText, fulltextLink->delta, fulltextLink->delta_sz);
> - return ConstantStringRef(finalText, fulltextLink->delta_sz);
> + memcpy(finalText, fulltextLink->delta, (size_t)fulltextLink->delta_sz);
> + return ConstantStringRef(finalText, (size_t)fulltextLink->delta_sz);
> }
>
> std::reverse(links.begin(), links.end());
> @@ -70,14 +71,15 @@
> throw std::logic_error("mpatch failed to fold patches");
> }
>
> - ssize_t outlen = mpatch_calcsize(fulltextLink->delta_sz, patch);
> + ssize_t outlen = mpatch_calcsize((ssize_t)fulltextLink->delta_sz, patch);
> if (outlen < 0) {
> mpatch_lfree(patch);
> throw std::logic_error("mpatch failed to calculate size");
> }
>
> char *result= new char[outlen];
> - if (mpatch_apply(result, (const char*)fulltextLink->delta, fulltextLink->delta_sz, patch) < 0) {
> + if (mpatch_apply(result, (const char*)fulltextLink->delta,
> + (ssize_t)fulltextLink->delta_sz, patch) < 0) {
> delete[] result;
> mpatch_lfree(patch);
> throw std::logic_error("mpatch failed to apply patches");
More information about the Mercurial-devel
mailing list