git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff Hostetler <git@jeffhostetler.com>
To: Junio C Hamano <gitster@pobox.com>, Wink Saville <wink@saville.com>
Cc: jeffhost@microsoft.com, Git List <git@vger.kernel.org>,
	Eric Sunshine <sunshine@sunshineco.com>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [RFC PATCH v5 0/8] rebase-interactive
Date: Mon, 26 Mar 2018 13:01:50 -0400	[thread overview]
Message-ID: <9ca76d31-828d-0b6f-5069-375792c1f55d@jeffhostetler.com> (raw)
In-Reply-To: <xmqqzi2ude4w.fsf@gitster-ct.c.googlers.com>



On 3/26/2018 11:56 AM, Junio C Hamano wrote:
> Wink Saville <wink@saville.com> writes:
> 
>> json-writer.c:123:38:  error:  format specifies type 'uintmax_t' (aka
>> 'unsigned long') but the argument has type 'uint64_t' (aka 'unsigned
>> long long') [-Werror,-Wformat]
>>
>>          strbuf_addf(&jw->json, ":%"PRIuMAX, value);
>>                                   ~~         ^~~~~
>> json-writer.c:228:37:  error:  format specifies type 'uintmax_t' (aka
>> 'unsigned long') but the argument has type 'uint64_t' (aka 'unsigned
>> long long') [-Werror,-Wformat] [0m
>>
>>          strbuf_addf(&jw->json, "%"PRIuMAX, value);
>>                                   ~~         ^~~~~
>> 2 errors generated.
>> make: *** [json-writer.o] Error 1
>> make: *** Waiting for unfinished jobs....
> 
> For whatever reason, our codebase seems to shy away from PRIu64,
> even though there are liberal uses of PRIu32.  Showing the value
> casted to uintmax_t with PRIuMAX seems to be our preferred way to
> say "We cannot say how wide this type is on different platforms, and
> are playing safe by using widest-possible int type" (e.g. showing a
> pid_t value from daemon.c).
> 
> In this codepath, the actual values are specified to be uint64_t, so
> the use of PRIu64 may be OK, but I have to wonder why the codepath
> is not dealing with uintmax_t in the first place.  When even larger
> than present archs are prevalent in N years and 64-bit starts to
> feel a tad small (like we feel for 16-bit ints these days), it will
> feel a bit silly to have a subsystem that is limited to such a
> "fixed and a tad small these days" types and pretend it to be be a
> generic seriealizer, I suspect.
> 

I defined that routine to take a uint64_t because I wanted to
pass a nanosecond value received from getnanotime() and that's
what it returns.

My preference would be to change the PRIuMAX to PRIu64, but there
aren't any other references in the code to that symbol and I didn't
want to start a new trend here.

I am concerned that the above compiler error message says that uintmax_t
is defined as an "unsigned long" (which is defined as *at least* 32 bits,
but not necessarily 64.  But a uint64_t is defined as a "unsigned long long"
and guaranteed as a 64 bit value.

So while I'm not really worried about 128 bit integers right now, I'm
more concerned about 32 bit compilers truncating that value without any
warnings.

Jeff


  reply	other threads:[~2018-03-26 17:01 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-23  4:39 [RFC PATCH v4] rebase-interactive Wink Saville
2018-03-23  4:39 ` [RFC PATCH v4] rebase-interactive: Simplify pick_on_preserving_merges Wink Saville
2018-03-23 17:10   ` Johannes Schindelin
2018-03-23  4:39 ` [RFC PATCH v4] rebase: Update invocation of rebase dot-sourced scripts Wink Saville
2018-03-23  6:26   ` Eric Sunshine
2018-03-23 21:01     ` Junio C Hamano
2018-03-23 21:18       ` Eric Sunshine
2018-03-23 17:12   ` Johannes Schindelin
2018-03-23 19:06     ` Wink Saville
2018-03-23 20:51       ` Junio C Hamano
2018-03-23 21:05         ` Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 0/8] rebase-interactive Wink Saville
2018-03-23 21:34   ` Wink Saville
2018-03-23 22:39     ` Junio C Hamano
2018-03-23 22:54       ` Wink Saville
2018-03-24  5:36         ` Wink Saville
2018-03-26 15:56           ` Junio C Hamano
2018-03-26 17:01             ` Jeff Hostetler [this message]
2018-03-26 17:57               ` Junio C Hamano
2018-03-26 18:22                 ` Jeff Hostetler
2018-03-27  5:07                   ` Junio C Hamano
2018-03-27 10:03                     ` Jeff Hostetler
2018-03-26 18:00               ` Junio C Hamano
2018-03-26 18:33                 ` Jeff Hostetler
2018-03-26 18:43                   ` Wink Saville
2018-03-26 19:37                     ` Junio C Hamano
2018-03-26 22:35                     ` Johannes Schindelin
2018-03-23 22:27   ` Junio C Hamano
2018-03-23 21:25 ` [RFC PATCH v5 1/8] rebase-interactive: simplify pick_on_preserving_merges Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 2/8] rebase: update invocation of rebase dot-sourced scripts Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 3/8] Indent function git_rebase__interactive Wink Saville
2018-03-23 22:12   ` Junio C Hamano
2018-03-23 22:52     ` Wink Saville
2018-03-23 23:06       ` Junio C Hamano
2018-03-24  0:01         ` Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 4/8] Extract functions out of git_rebase__interactive Wink Saville
2018-03-23 22:22   ` Junio C Hamano
2018-03-24  7:20   ` Eric Sunshine
2018-03-23 21:25 ` [RFC PATCH v5 5/8] Add and use git_rebase__interactive__preserve_merges Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 6/8] Remove unused code paths from git_rebase__interactive Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 7/8] Remove unused code paths from git_rebase__interactive__preserve_merges Wink Saville
2018-03-23 21:25 ` [RFC PATCH v5 8/8] Remove merges_option and a blank line Wink Saville

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9ca76d31-828d-0b6f-5069-375792c1f55d@jeffhostetler.com \
    --to=git@jeffhostetler.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jeffhost@microsoft.com \
    --cc=sunshine@sunshineco.com \
    --cc=wink@saville.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).