Mercurial > hg > octave-nkf > gnulib-hg
changeset 16779:d208110ffb1c
README: document pointer comparison assumption
* README (Portability guidelines): Document assumption about
pointer comparisons, in response to a recent bug-gnulib comment by
Jeffrey Kegler.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 12 Apr 2012 18:56:54 -0700 |
parents | 86a111c85915 |
children | 69130722f8b9 |
files | ChangeLog README |
diffstat | 2 files changed, 19 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-04-12 Paul Eggert <eggert@cs.ucla.edu> + + README: document pointer comparison assumption + * README (Portability guidelines): Document assumption about + pointer comparisons, in response to a recent bug-gnulib comment by + Jeffrey Kegler. + 2012-04-12 Bruno Haible <bruno@clisp.org> Tests for module 'getrusage'.
--- a/README +++ b/README @@ -258,15 +258,19 @@ * There are no "holes" in integer values: all the bits of an integer contribute to its value in the usual way. - * If two nonoverlapping objects have sizes S and T represented as - size_t values, then S + T cannot overflow. This assumption is true - for all practical hosts with flat address spaces, but it is not - always true for hosts with segmented address spaces. + * Addresses and sizes behave as if objects reside in a flat address space. + In particular: + + - If two nonoverlapping objects have sizes S and T represented as + size_t values, then S + T cannot overflow. - * If an existing object has size S, and if T is sufficiently small - (e.g., 8 KiB), then S + T cannot overflow. Overflow in this case - would mean that the rest of your program fits into T bytes, which - can't happen in realistic flat-address-space hosts. + - A pointer P points within an object O if and only if + (char *) &O <= (char *) P && (char *) P < (char *) (&O + 1). + + - If an existing object has size S, and if T is sufficiently small + (e.g., 8 KiB), then S + T cannot overflow. Overflow in this case + would mean that the rest of your program fits into T bytes, which + can't happen in realistic flat-address-space hosts. * Objects with all bits zero are treated as 0 or NULL. For example, memset (A, 0, sizeof A) initializes an array A of pointers to NULL.