]> git.ipfire.org Git - thirdparty/git.git/commitdiff
http-push: avoid new compile error
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Fri, 26 Sep 2025 10:32:52 +0000 (10:32 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 26 Sep 2025 17:38:18 +0000 (10:38 -0700)
With the recent update in Git for Windows/ARM64 as of
https://github.com/git-for-windows/git-sdk-arm64/commit/21b288e16358
cURL was updated from v8.15.0 to v8.16.0, and the LLVM-based builds (but
strangely not the GCC-based builds) continuously greet me thusly:

  http-push.c:211:2: error: call to '_curl_easy_setopt_err_long' declared
  with 'warning' attribute: curl_easy_setopt expects a long argument
  [-Werror,-Wattribute-warning]
      CC builtin/apply.o
    211 |         curl_easy_setopt(curl, CURLOPT_INFILESIZE, buffer->buf.len);
        |         ^
  C:/a/git-sdk-arm64/git-sdk-arm64/minimal-sdk/clangarm64/include/curl/typecheck-gcc.h:50:15:
  note: expanded from macro 'curl_easy_setopt'
     50 |               _curl_easy_setopt_err_long();                             \
        |               ^
  1 error generated.
  make: *** [Makefile:2877: http-push.o] Error 1

The easiest way to shut up that compile error (which is legitimate,
seeing as the `CURLOPT_INFILESIZE` options expects a `long` parameter,
but `buffer->buf.len` refers to the `size_t` attribute of a `strbuf`)
would be to simply cast the parameter to a `long`.

However, there is a much better solution: To use the
`CURLOPT_INFILESIZE_LARGE` option instead, which was added in cURL
v7.11.0 (see https://curl.se/ch/7.11.0.html) and which Git _already_
uses in `curl_append_msgs_to_imap()`.

This fix was the motivation for renaming `xcurl_off_t()` to
`cast_size_t_to_curl_off_t()` and making it available more broadly,
which is the reason why it is used here, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http-push.c

index f5a92529a8406b5cce2d60e1dddb518a84ed2394..c06b94d5dbd86270c4f6d1abada2fceeb067d021 100644 (file)
@@ -208,7 +208,8 @@ static void curl_setup_http(CURL *curl, const char *url,
        curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_INFILE, buffer);
-       curl_easy_setopt(curl, CURLOPT_INFILESIZE, buffer->buf.len);
+       curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
+                        cast_size_t_to_curl_off_t(buffer->buf.len));
        curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
        curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, seek_buffer);
        curl_easy_setopt(curl, CURLOPT_SEEKDATA, buffer);