GNU bug report logs -
#8828
unsigned casts in PTR_BYTE_POS and BUF_PTR_BYTE_POS
Previous Next
Reported by: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Thu, 9 Jun 2011 06:55:01 UTC
Severity: normal
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
[Message part 1 (text/plain, inline)]
Your message dated Sat, 31 Dec 2011 00:37:15 -0800
with message-id <4EFEC9BB.4040105 <at> cs.ucla.edu>
and subject line Re: unsigned casts in PTR_BYTE_POS and BUF_PTR_BYTE_POS
has caused the debbugs.gnu.org bug report #8828,
regarding unsigned casts in PTR_BYTE_POS and BUF_PTR_BYTE_POS
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
8828: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8828
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
Currently, src/buffer.h's macros PTR_BYTE_POS and BUF_PTR_BYTE_POS
both cast subexpressions to 'unsigned'. This can't
be right on a 64-bit host, since the subexpressions might
exceed 2**32 if the buffer is large, and their values shouldn't
be truncated to 32 bits.
I can't see why the cast to 'unsigned' is there at all,
even on a 32-bit host; unless I'm missing something
the values being compared are always nonnegative.
So I'd like to install the following
patch into the trunk, after some testing.
=== modified file 'src/buffer.h'
--- src/buffer.h 2011-06-06 19:43:39 +0000
+++ src/buffer.h 2011-06-09 04:04:41 +0000
@@ -337,7 +337,7 @@
#define PTR_BYTE_POS(ptr) \
((ptr) - (current_buffer)->text->beg \
- - (ptr - (current_buffer)->text->beg <= (unsigned) (GPT_BYTE - BEG_BYTE) ? 0 : GAP_SIZE) \
+ - (ptr - (current_buffer)->text->beg <= GPT_BYTE - BEG_BYTE ? 0 : GAP_SIZE) \
+ BEG_BYTE)
/* Return character at byte position POS. */
@@ -396,7 +396,7 @@
#define BUF_PTR_BYTE_POS(buf, ptr) \
((ptr) - (buf)->text->beg \
- - (ptr - (buf)->text->beg <= (unsigned) (BUF_GPT_BYTE ((buf)) - BEG_BYTE)\
+ - (ptr - (buf)->text->beg <= BUF_GPT_BYTE ((buf)) - BEG_BYTE \
? 0 : BUF_GAP_SIZE ((buf))) \
+ BEG_BYTE)
[Message part 3 (message/rfc822, inline)]
This bug was fixed in bzr 104599 in the trunk, dated 2011-06-15.
I forgot to close it then but am closing it now.
This bug report was last modified 13 years and 150 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.