GNU bug report logs - #9000
patch for higher-resolution time stamps

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Tue, 5 Jul 2011 06:42:02 UTC

Severity: normal

Tags: patch

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 9000 <at> debbugs.gnu.org
Subject: bug#9000: patch for higher-resolution time stamps
Date: Sat, 23 Jun 2012 15:45:26 -0700
On 06/23/2012 12:42 PM, Eli Zaretskii wrote:
> Never mind, I fixed that myself.

Unfortunately the patch that you installed can break
Emacs on hosts where time_t is unsigned, because
it assigns time_t values to intmax_t variables,
and this does not always work correctly when
INTMAX_MAX < TIME_T_MAX.

Which version of GCC are you running?
What is INTMAX_MAX defined to, on your platform?

Does it work to pacify your old GCC if you
replace this:

      intmax_t secs = EMACS_SECS (t);

      wait_reading_process_output (min (secs, INTMAX_MAX),
                                   EMACS_NSECS (t), 0, 0, Qnil, NULL, 0);

with this?

      intmax_t max = INTMAX_MAX;

      wait_reading_process_output (min (secs, max),
                                   EMACS_NSECS (t), 0, 0, Qnil, NULL, 0);

Or how about this?

static intmax_t intmax_max = INTMAX_MAX;
...    
      wait_reading_process_output (min (secs, intmax_max),
                                   EMACS_NSECS (t), 0, 0, Qnil, NULL, 0);

We could make this latter rewrite conditional only for older
GCC versions.




This bug report was last modified 12 years and 338 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.