projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update NEWS.stable
[gnulib.git]
/
tests
/
zerosize-ptr.h
diff --git
a/tests/zerosize-ptr.h
b/tests/zerosize-ptr.h
index
9918ac7
..
beeb3da
100644
(file)
--- a/
tests/zerosize-ptr.h
+++ b/
tests/zerosize-ptr.h
@@
-1,5
+1,5
@@
/* Return a pointer to a zero-size object in memory.
/* Return a pointer to a zero-size object in memory.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009
-2011
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-35,7
+35,9
@@
# endif
#endif
# endif
#endif
-/* Return a pointer to a zero-size object in memory, if possible.
+/* Return a pointer to a zero-size object in memory (that is, actually, a
+ pointer to a page boundary where the previous page is readable and writable
+ and the next page is neither readable not writable), if possible.
Return NULL otherwise. */
static void *
Return NULL otherwise. */
static void *
@@
-55,11
+57,11
@@
zerosize_ptr (void)
{
int pagesize = getpagesize ();
char *two_pages =
{
int pagesize = getpagesize ();
char *two_pages =
- (char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
- flags, fd, 0);
+
(char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
+
flags, fd, 0);
if (two_pages != (char *)(-1)
if (two_pages != (char *)(-1)
- && mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
- return two_pages + pagesize;
+
&& mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
+
return two_pages + pagesize;
}
#endif
return NULL;
}
#endif
return NULL;