diff options
-rw-r--r-- | src/unexec.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/unexec.c b/src/unexec.c index 4b853e5b7ee..3be336a9a77 100644 --- a/src/unexec.c +++ b/src/unexec.c @@ -1014,14 +1014,15 @@ write_segment (new, ptr, end) register int i, nwrite, ret; char buf[80]; extern int errno; - char zeros[128]; + int pagesize = getpagesize (); + char *zeros = (char *) alloca (pagesize); - bzero (zeros, sizeof zeros); + bzero (zeros, pagesize); for (i = 0; ptr < end;) { - /* distance to next multiple of 128. */ - nwrite = (((int) ptr + 128) & -128) - (int) ptr; + /* distance to next multiple of pagesize. */ + nwrite = (((int) ptr + pagesize) & -pagesize) - (int) ptr; /* But not beyond specified end. */ if (nwrite > end - ptr) nwrite = end - ptr; ret = write (new, ptr, nwrite); |