Skip to content

Conversation

dscho
Copy link
Member

@dscho dscho commented Jun 5, 2025

This came up during the release process of Git for Windows v2.50.0-rc1.

Changes since v1:

  • Rebased on top of jk/curl-easy-setopt-typefix.

cc: "Kristoffer Haugsbakk" [email protected], Jeff King [email protected]
cc: Martin Ågren [email protected]

peff added 3 commits June 4, 2025 14:17
The curl documentation specifies that curl_easy_setopt() takes either:

  ...a long, a function pointer, an object pointer or a curl_off_t,
  depending on what the specific option expects.

But when we pass an integer constant like "0", it will by default be a
regular non-long int. This has always been wrong, but seemed to work in
practice (I didn't dig into curl's implementation to see whether this
might actually be triggering undefined behavior, but it seems likely and
regardless we should do what the docs say).

This is especially important since curl has a type-checking macro that
causes building against curl 8.14 to produce many warnings. The specific
commit is due to their 79b4e56b3 (typecheck-gcc.h: fix the typechecks,
2025-04-22). Curiously, it does only seem to trigger when compiled with
-O2 for me.

We can fix it by just marking the constants with a long "L".

Signed-off-by: Jeff King <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
As discussed in the previous commit, we should be passing long integers,
not regular ones, to curl_easy_setopt(), and compiling against curl 8.14
loudly complains if we don't.

That patch fixed integer constants by adding an "L". This one deals with
actual variables.

Arguably these variables could just be declared as "long" in the first
place. But it's actually kind of awkward due to other code which uses
them:

  - port is conceptually a short, and we even call htons() on it (though
    weirdly it is defined as a regular int).

  - ssl_verify is conceptually a bool, and we assign to it from
    git_config_bool().

So I think we could probably switch these out for longs without hurting
anything, but it just feels a bit weird. Doubly so because if you don't
set USE_CURL_FOR_IMAP_SEND set, then the current types are fine!

So let's just cast these to longs in the curl calls, which makes what's
going on obvious. There aren't that many spots to modify (and as you can
see from the context, we already have some similar casts).

Signed-off-by: Jeff King <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
As with the previous two commits, we should be passing long integers,
not regular ones, to curl_easy_setopt(), and compiling against curl 8.14
loudly complains if we don't.

This patch catches the remaining cases, which are ones where we pass
curl's own symbolic constants. We'll cast them to long manually in each
call.

It seems kind of weird to me that curl doesn't define these constants as
longs, since the point of them is to pass to curl_easy_setopt(). But in
the curl documentation and examples, they clearly show casting them as
part of the setopt calls. It may be that there is some reason not to
push the type into the macro, like backwards compatibility. I didn't
dig, as it doesn't really matter: we have to follow what existing curl
versions ask for anyway.

Signed-off-by: Jeff King <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
@dscho dscho self-assigned this Jun 5, 2025
@dscho dscho force-pushed the curl-options-want-long-instead-of-int branch from d43e7f1 to 803e235 Compare June 5, 2025 07:29
@dscho
Copy link
Member Author

dscho commented Jun 5, 2025

/submit

Copy link

gitgitgadget bot commented Jun 5, 2025

Submitted as [email protected]

To fetch this version into FETCH_HEAD:

git fetch https://github.com/gitgitgadget/git/ pr-1931/dscho/curl-options-want-long-instead-of-int-v1

To fetch this version to local tag pr-1931/dscho/curl-options-want-long-instead-of-int-v1:

git fetch --no-tags https://github.com/gitgitgadget/git/ tag pr-1931/dscho/curl-options-want-long-instead-of-int-v1

Copy link

gitgitgadget bot commented Jun 5, 2025

On the Git mailing list, "Kristoffer Haugsbakk" wrote (reply to this):

On Thu, Jun 5, 2025, at 10:31, Johannes Schindelin via GitGitGadget wrote:
> From: Johannes Schindelin <[email protected]>
>
> As of Homebrew's update to cURL v8.14.0, there are new compile errors to
> be observed in the `osx-gcc` job of Git's CI builds:

This overlaps with King’s https://lore.kernel.org/git/[email protected]/

Copy link

gitgitgadget bot commented Jun 5, 2025

User "Kristoffer Haugsbakk" <[email protected]> has been added to the cc: list.

Copy link

gitgitgadget bot commented Jun 5, 2025

On the Git mailing list, Johannes Schindelin wrote (reply to this):

Hi Kristoffer,

On Thu, 5 Jun 2025, Kristoffer Haugsbakk wrote:

> On Thu, Jun 5, 2025, at 10:31, Johannes Schindelin via GitGitGadget wrote:
> > From: Johannes Schindelin <[email protected]>
> >
> > As of Homebrew's update to cURL v8.14.0, there are new compile errors to
> > be observed in the `osx-gcc` job of Git's CI builds:
> 
> This overlaps with King’s https://lore.kernel.org/git/[email protected]/

Thank you for the heads-up! When I had to start fixing those builds, I had
a quick look but did not find any report on the Git mailing list. But I
see gaps, and I will comment on Jeff's patch.

Thanks!
Johannes

As of Homebrew's update to cURL v8.14.0, there are new compile errors to
be observed in the `osx-gcc` job of Git's CI builds:

  In file included from http.h:8,
                   from imap-send.c:36:
  In function 'setup_curl',
      inlined from 'curl_append_msgs_to_imap' at imap-send.c:1460:9,
      inlined from 'cmd_main' at imap-send.c:1581:9:
  /usr/local/Cellar/curl/8.14.0/include/curl/typecheck-gcc.h:50:15: error: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument [-Werror=attribute-warning]
     50 |               _curl_easy_setopt_err_long();                             \
        |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /usr/local/Cellar/curl/8.14.0/include/curl/curl.h:54:7: note: in definition of macro 'CURL_IGNORE_DEPRECATION'
     54 |       statements \
        |       ^~~~~~~~~~
  imap-send.c:1423:9: note: in expansion of macro 'curl_easy_setopt'
   1423 |         curl_easy_setopt(curl, CURLOPT_PORT, srvc->port);
        |         ^~~~~~~~~~~~~~~~
  [... many more instances of nearly identical warnings...]

See for example this CI workflow run:
https://github.com/git/git/actions/runs/15454602308/job/43504278284#step:4:307

The most likely explanation is the entry "typecheck-gcc.h: fix the
typechecks" in cURL's release notes (https://curl.se/ch/8.14.0.html).

Nearly identical compile errors afflicted recently-updated Debian
setups, which have been addressed by `jk/curl-easy-setopt-typefix`.

However, on macOS Git is built with different build options, which
uncovered more instances of `int` values that need to be cast to
constants, which were not covered by 6f11c42 (curl: fix integer
constant typechecks with curl_easy_setopt(), 2025-06-04). Let's
explicitly convert even those remaining `int` constants in
`curl_easy_setopt()` calls to `long` parameters.

In addition to looking at the compile errors of the `osx-gcc` job, I
verified that there are no other instances of the same issue that need
to be handled in this manner (and that might not be caught by our CI
builds because of yet other build options that might skip those code
parts), I ran the following command and inspected all 23 results
manually to ensure that the fix is now actually complete:

  git grep -n curl_easy_setopt |
  grep -ve ',.*, *[A-Za-z_"&]' \
    -e ',.*, *[-0-9]*L)' \
    -e ',.*,.* (long)'

Signed-off-by: Johannes Schindelin <[email protected]>
@dscho dscho force-pushed the curl-options-want-long-instead-of-int branch from 803e235 to 80de749 Compare June 6, 2025 09:23
@dscho dscho changed the base branch from master to next June 6, 2025 09:24
@dscho
Copy link
Member Author

dscho commented Jun 6, 2025

/submit

Copy link

gitgitgadget bot commented Jun 6, 2025

Submitted as [email protected]

To fetch this version into FETCH_HEAD:

git fetch https://github.com/gitgitgadget/git/ pr-1931/dscho/curl-options-want-long-instead-of-int-v2

To fetch this version to local tag pr-1931/dscho/curl-options-want-long-instead-of-int-v2:

git fetch --no-tags https://github.com/gitgitgadget/git/ tag pr-1931/dscho/curl-options-want-long-instead-of-int-v2

}

static void curl_setup_http(CURL *curl, const char *url,
const char *custom_req, struct buffer *buffer,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Git mailing list, Jeff King wrote (reply to this):

On Fri, Jun 06, 2025 at 09:29:24AM +0000, Johannes Schindelin via GitGitGadget wrote:

> Nearly identical compile errors afflicted recently-updated Debian
> setups, which have been addressed by `jk/curl-easy-setopt-typefix`.
> 
> However, on macOS Git is built with different build options, which
> uncovered more instances of `int` values that need to be cast to
> constants, which were not covered by 6f11c42e8edc (curl: fix integer
> constant typechecks with curl_easy_setopt(), 2025-06-04). Let's
> explicitly convert even those remaining `int` constants in
> `curl_easy_setopt()` calls to `long` parameters.

What different build options? The extra fixes are in code that is
compiled on all platforms. E.g.:

> --- a/remote-curl.c
> +++ b/remote-curl.c
> @@ -970,8 +970,8 @@ retry:
>  
>  	slot = get_active_slot();
>  
> -	curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
> -	curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
> +	curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
> +	curl_easy_setopt(slot->curl, CURLOPT_POST, 1L);
>  	curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
>  	curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");

So I think the root cause of the difference remains a mystery.

Curiously, if I build libcurl from source and link against it on my
Debian system, I get all of the errors (including the ones you're fixing
here). But with the exact same compile options (modulo pointing
CURL_CONFIG at the right spot), building against the Debian-packaged
libcurl is OK. Weird.

> In addition to looking at the compile errors of the `osx-gcc` job, I
> verified that there are no other instances of the same issue that need
> to be handled in this manner (and that might not be caught by our CI
> builds because of yet other build options that might skip those code
> parts), I ran the following command and inspected all 23 results
> manually to ensure that the fix is now actually complete:
> 
>   git grep -n curl_easy_setopt |
>   grep -ve ',.*, *[A-Za-z_"&]' \
>     -e ',.*, *[-0-9]*L)' \
>     -e ',.*,.* (long)'

I don't think that's sufficient for a full audit, because the first
"grep -v" regex is removing variable names and symbolic constants, which
might also need to be cast to long (i.e., my patches 2 and 3).

But as your patch fixes the exact set that I also needed when building
against my custom-built libcurl, I'm content to say we have spent enough
time digging. If there is some platform or makefile knob combination
that triggers one we missed, then curl's type-checker will catch it and
we can fix it then.

-Peff

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Git mailing list, Junio C Hamano wrote (reply to this):

Jeff King <[email protected]> writes:

> But as your patch fixes the exact set that I also needed when building
> against my custom-built libcurl, I'm content to say we have spent enough
> time digging. If there is some platform or makefile knob combination
> that triggers one we missed, then curl's type-checker will catch it and
> we can fix it then.

Yeah, thanks, both.

Copy link

gitgitgadget bot commented Jun 6, 2025

On the Git mailing list, "Kristoffer Haugsbakk" wrote (reply to this):

On Fri, Jun 6, 2025, at 11:29, Johannes Schindelin via GitGitGadget wrote:
>        ## http.c ##
>      -@@ http.c: static CURL *get_curl_handle(void)
>      - 		die("curl_easy_init failed");
>      -
>      - 	if (!curl_ssl_verify) {
>      --		curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0);
>      --		curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 0);
>      -+		curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0l);
>      -+		curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 0l);

Maybe I don’t understand range-diffs enough but it looked like this was
using `0l` instead of `0L`.[1]  However the patches do use `<num>L` instead
of `<num>l` throughout.  Which I like

† 1: Or rather I don’t understand that this is showing `0l`

}

static void curl_setup_http(CURL *curl, const char *url,
const char *custom_req, struct buffer *buffer,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the Git mailing list, Junio C Hamano wrote (reply to this):

"Johannes Schindelin via GitGitGadget" <[email protected]>
writes:

> From: Johannes Schindelin <[email protected]>
>
> As of Homebrew's update to cURL v8.14.0, there are new compile errors to
> be observed in the `osx-gcc` job of Git's CI builds:
>
>   In file included from http.h:8,
>                    from imap-send.c:36:
>   In function 'setup_curl',
>       inlined from 'curl_append_msgs_to_imap' at imap-send.c:1460:9,
>       inlined from 'cmd_main' at imap-send.c:1581:9:
>   /usr/local/Cellar/curl/8.14.0/include/curl/typecheck-gcc.h:50:15: error: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument [-Werror=attribute-warning]
>      50 |               _curl_easy_setopt_err_long();                             \
>         |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   /usr/local/Cellar/curl/8.14.0/include/curl/curl.h:54:7: note: in definition of macro 'CURL_IGNORE_DEPRECATION'
>      54 |       statements \
>         |       ^~~~~~~~~~
>   imap-send.c:1423:9: note: in expansion of macro 'curl_easy_setopt'
>    1423 |         curl_easy_setopt(curl, CURLOPT_PORT, srvc->port);
>         |         ^~~~~~~~~~~~~~~~
>   [... many more instances of nearly identical warnings...]
>
> See for example this CI workflow run:
> https://github.com/git/git/actions/runs/15454602308/job/43504278284#step:4:307
>
> The most likely explanation is the entry "typecheck-gcc.h: fix the
> typechecks" in cURL's release notes (https://curl.se/ch/8.14.0.html).

All of the above were good descriptions in a standalone patch.

However.

The first two lines that mention that osx-gcc job was broken are
valuable introduction to flow into "Nearly identical ... Debian",
but except that, but as part of a series it is probably a tad too
verbose.

> Nearly identical compile errors afflicted recently-updated Debian
> setups, which have been addressed by `jk/curl-easy-setopt-typefix`.
>
> However, on macOS Git is built with different build options, which
> uncovered more instances of `int` values that need to be cast to
> constants, which were not covered by 6f11c42e8edc (curl: fix integer
> constant typechecks with curl_easy_setopt(), 2025-06-04). Let's
> explicitly convert even those remaining `int` constants in
> `curl_easy_setopt()` calls to `long` parameters.

It is a but curious what build option differences caused it, as I do
not think any "#ifdef DARWIN" is involved.

By the way, I notice that we refer to 6f11c42e (curl: fix integer
constant typechecks with curl_easy_setopt(), 2025-06-04), so I won't
be requeueing Peff's patches.  I locally applied these four patches
and the result of applying the first three on the same base was
identical to what I already had in jk/curl-easy-setopt-typefix topic
(you didn't have to resend them---which was unnecessary confusing).

> In addition to looking at the compile errors of the `osx-gcc` job, I
> verified that there are no other instances of the same issue that need
> to be handled in this manner (and that might not be caught by our CI
> builds because of yet other build options that might skip those code
> parts), I ran the following command and inspected all 23 results
> manually to ensure that the fix is now actually complete:
>
>   git grep -n curl_easy_setopt |
>   grep -ve ',.*, *[A-Za-z_"&]' \
>     -e ',.*, *[-0-9]*L)' \
>     -e ',.*,.* (long)'

Thanks for being careful.  But I think it is probably counter
productive to exclud the first pattern (presumably to catch CURL*
and other symbols), as the symbols defined by the library headers
still require to be cast to long; see:

  https://lore.kernel.org/git/[email protected]/

Anyway, the change this patch makes matches what you sent as a
"these still remain" yesterday, so I understand that your inspecting
the 23 results manually did not find any "ah, this too needs updated
but was missing from the one we saw yesterday", which is a wonderful
news.

With this patch replaced (but not 3 from Peff), I'll redo the 'next'
(thank me, whatever your deity is, and your good luck that I haven't
pushed it out, even though I did it with yesterday's material late
last night) and push the result out, but it won't be a while (even
though we already know the tree objects should be the same), as I
want to see if there are other urgent changes that have to go to
'next' before doing so.

Thanks.

> Signed-off-by: Johannes Schindelin <[email protected]>
> ---
>  http-push.c   |  6 +++---
>  http.c        | 22 +++++++++++-----------
>  remote-curl.c |  6 +++---
>  3 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/http-push.c b/http-push.c
> index 591e46ab260d..f5a92529a840 100644
> --- a/http-push.c
> +++ b/http-push.c
> @@ -205,7 +205,7 @@ static void curl_setup_http(CURL *curl, const char *url,
>  		const char *custom_req, struct buffer *buffer,
>  		curl_write_callback write_fn)
>  {
> -	curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
> +	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);
> @@ -213,9 +213,9 @@ static void curl_setup_http(CURL *curl, const char *url,
>  	curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, seek_buffer);
>  	curl_easy_setopt(curl, CURLOPT_SEEKDATA, buffer);
>  	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn);
> -	curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
> +	curl_easy_setopt(curl, CURLOPT_NOBODY, 0L);
>  	curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, custom_req);
> -	curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
> +	curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
>  }
>  
>  static struct curl_slist *get_dav_token_headers(struct remote_lock *lock, enum dav_header_flag options)
> diff --git a/http.c b/http.c
> index ecbc47ea4b3f..d88e79fbde9c 100644
> --- a/http.c
> +++ b/http.c
> @@ -1540,9 +1540,9 @@ struct active_request_slot *get_active_slot(void)
>  	curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, NULL);
>  	curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDS, NULL);
>  	curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE, -1L);
> -	curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0);
> -	curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
> -	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1);
> +	curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0L);
> +	curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1L);
> +	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1L);
>  	curl_easy_setopt(slot->curl, CURLOPT_RANGE, NULL);
>  
>  	/*
> @@ -1551,9 +1551,9 @@ struct active_request_slot *get_active_slot(void)
>  	 * HTTP_FOLLOW_* cases themselves.
>  	 */
>  	if (http_follow_config == HTTP_FOLLOW_ALWAYS)
> -		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1);
> +		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1L);
>  	else
> -		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0);
> +		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0L);
>  
>  	curl_easy_setopt(slot->curl, CURLOPT_IPRESOLVE, git_curl_ipresolve);
>  	curl_easy_setopt(slot->curl, CURLOPT_HTTPAUTH, http_auth_methods);
> @@ -2120,12 +2120,12 @@ static int http_request(const char *url,
>  	int ret;
>  
>  	slot = get_active_slot();
> -	curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
> +	curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1L);
>  
>  	if (!result) {
> -		curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1);
> +		curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1L);
>  	} else {
> -		curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
> +		curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
>  		curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, result);
>  
>  		if (target == HTTP_REQUEST_FILE) {
> @@ -2151,7 +2151,7 @@ static int http_request(const char *url,
>  		strbuf_addstr(&buf, " no-cache");
>  	if (options && options->initial_request &&
>  	    http_follow_config == HTTP_FOLLOW_INITIAL)
> -		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1);
> +		curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1L);
>  
>  	headers = curl_slist_append(headers, buf.buf);
>  
> @@ -2170,7 +2170,7 @@ static int http_request(const char *url,
>  	curl_easy_setopt(slot->curl, CURLOPT_URL, url);
>  	curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
>  	curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
> -	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
> +	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0L);
>  
>  	ret = run_one_slot(slot, &results);
>  
> @@ -2750,7 +2750,7 @@ struct http_object_request *new_http_object_request(const char *base_url,
>  	freq->headers = object_request_headers();
>  
>  	curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEDATA, freq);
> -	curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0);
> +	curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0L);
>  	curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEFUNCTION, fwrite_sha1_file);
>  	curl_easy_setopt(freq->slot->curl, CURLOPT_ERRORBUFFER, freq->errorstr);
>  	curl_easy_setopt(freq->slot->curl, CURLOPT_URL, freq->url);
> diff --git a/remote-curl.c b/remote-curl.c
> index 6183772191f2..b8bc3a80cf41 100644
> --- a/remote-curl.c
> +++ b/remote-curl.c
> @@ -970,8 +970,8 @@ retry:
>  
>  	slot = get_active_slot();
>  
> -	curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
> -	curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
> +	curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
> +	curl_easy_setopt(slot->curl, CURLOPT_POST, 1L);
>  	curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
>  	curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
>  
> @@ -1058,7 +1058,7 @@ retry:
>  	rpc_in_data.check_pktline = stateless_connect;
>  	memset(&rpc_in_data.pktline_state, 0, sizeof(rpc_in_data.pktline_state));
>  	curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &rpc_in_data);
> -	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
> +	curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0L);
>  
>  
>  	rpc->any_written = 0;

Copy link

gitgitgadget bot commented Jun 6, 2025

On the Git mailing list, Martin Ågren wrote (reply to this):

On Fri, 6 Jun 2025 at 16:28, Kristoffer Haugsbakk
<[email protected]> wrote:
>
> On Fri, Jun 6, 2025, at 11:29, Johannes Schindelin via GitGitGadget wrote:
> >        ## http.c ##
> >      -@@ http.c: static CURL *get_curl_handle(void)
> >      -                die("curl_easy_init failed");
> >      -
> >      -        if (!curl_ssl_verify) {
> >      --               curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0);
> >      --               curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 0);
> >      -+               curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0l);
> >      -+               curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 0l);
>
> Maybe I don’t understand range-diffs enough but it looked like this was
> using `0l` instead of `0L`.[1]  However the patches do use `<num>L` instead
> of `<num>l` throughout.  Which I like
>
> † 1: Or rather I don’t understand that this is showing `0l`

You can read "--" as "we no longer remove this" and "-+" as "we no
longer add this". In fact, this whole section begins with "-" (in the
outer diff) and we can read this as "we no longer touch this at all."

Where, crucially, it's "we no longer touch this *in this patch*". Patch
1/4 in this v2 does change this from "0" to "0L" and this updated patch
4/4 then leaves this spot as is. Unlike in v1, when this was a much bigger
patch that touched this spot and many others.

Martin

Copy link

gitgitgadget bot commented Jun 6, 2025

User Martin Ågren <[email protected]> has been added to the cc: list.

Copy link

gitgitgadget bot commented Jun 6, 2025

On the Git mailing list, "Kristoffer Haugsbakk" wrote (reply to this):

On Fri, Jun 6, 2025, at 17:43, Martin Ågren wrote:
>> Maybe I don’t understand range-diffs enough but it looked like this was
>> using `0l` instead of `0L`.[1]  However the patches do use `<num>L` instead
>> of `<num>l` throughout.  Which I like
>>
>> † 1: Or rather I don’t understand that this is showing `0l`
>
> You can read "--" as "we no longer remove this" and "-+" as "we no
> longer add this". In fact, this whole section begins with "-" (in the
> outer diff) and we can read this as "we no longer touch this at all."
>
> Where, crucially, it's "we no longer touch this *in this patch*". Patch
> 1/4 in this v2 does change this from "0" to "0L" and this updated patch
> 4/4 then leaves this spot as is. Unlike in v1, when this was a much bigger
> patch that touched this spot and many others.

Aha, thanks!

-- 
Kristoffer Haugsbakk

Copy link

gitgitgadget bot commented Jun 6, 2025

This patch series was integrated into seen via git@fd82b50.

Copy link

gitgitgadget bot commented Jun 6, 2025

This patch series was integrated into next via git@f25aaba.

Copy link

gitgitgadget bot commented Jun 7, 2025

This branch is now known as js/curl-easy-setopt-typefix.

Copy link

gitgitgadget bot commented Jun 7, 2025

This patch series was integrated into seen via git@8546b35.

Copy link

gitgitgadget bot commented Jun 7, 2025

This patch series was integrated into master via git@8546b35.

Copy link

gitgitgadget bot commented Jun 7, 2025

This patch series was integrated into next via git@8546b35.

@gitgitgadget gitgitgadget bot added the master label Jun 7, 2025
@gitgitgadget gitgitgadget bot closed this Jun 7, 2025
Copy link

gitgitgadget bot commented Jun 7, 2025

Closed via 8546b35.

@dscho dscho deleted the curl-options-want-long-instead-of-int branch June 7, 2025 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants