--- rxvt-unicode/src/emman.c 2012/06/28 15:19:15 1.1 +++ rxvt-unicode/src/emman.c 2014/10/30 21:55:15 1.6 @@ -1,3 +1,17 @@ +/* enable mremap on GNU/Linux */ +#ifdef __linux__ +# define _GNU_SOURCE +#endif + +/* enable the POSIX prototypes of mmap/munmap on Solaris */ +#ifdef __sun +# if __STDC_VERSION__ >= 199901L +# define _XOPEN_SOURCE 600 +# else +# define _XOPEN_SOURCE 500 +# endif +#endif + #include "emman.h" #include @@ -10,9 +24,6 @@ #if _POSIX_MAPPED_FILES # define USE_MMAP 1 -# ifdef __linux__ -# define _GNU_SOURCE -# endif # include # ifndef MAP_FAILED # define MAP_FAILED ((void *)-1) @@ -34,6 +45,7 @@ # endif #else # define PAGESIZE 1 +# define BOOT_PAGESIZE #endif size_t @@ -118,7 +130,7 @@ return ptr2; #endif #else - return realloc (ptr, size); + return realloc (ptr, new_size); #endif } @@ -126,7 +138,9 @@ chunk_free (void *ptr, size_t size) { #if USE_MMAP - munmap (ptr, size); + /* we assume the OS never mmaps at address 0 */ + if (ptr) + munmap (ptr, size); #else return free (ptr); #endif