"make bigdata" biggest offender dealt with:

xmalloc 16Kb buffer instead of keeping it in bss
This commit is contained in:
Denis Vlasenko 2006-11-30 21:11:01 +00:00
parent 610c4aa197
commit 93f6aa6bca
2 changed files with 5 additions and 3 deletions

View File

@ -735,7 +735,7 @@ xbsd_write_bootstrap(void)
memset(d, 0, sizeof(struct xbsd_disklabel));
snprintf(path, sizeof(path), "%s/boot%s", bootdir, dkbasename);
if (!xbsd_get_bootstrap (path, &disklabelbuffer[xbsd_dlabel.d_secsize],
if (!xbsd_get_bootstrap(path, &disklabelbuffer[xbsd_dlabel.d_secsize],
(int) xbsd_dlabel.d_bbsize - xbsd_dlabel.d_secsize))
return;
@ -969,7 +969,7 @@ xbsd_writelabel (struct partition *p, struct xbsd_disklabel *d)
d, sizeof(struct xbsd_disklabel));
#if defined (__alpha__) && BSD_LABELSECTOR == 0
alpha_bootblock_checksum (disklabelbuffer);
alpha_bootblock_checksum(disklabelbuffer);
if (lseek(fd, 0, SEEK_SET) == -1)
fdisk_fatal(unable_to_seek);
if (BSD_BBSIZE != write(fd, disklabelbuffer, BSD_BBSIZE))

View File

@ -613,7 +613,8 @@ static void alarm_intr(int alnum)
static void check_blocks(void)
{
int try, got;
static char buffer[BLOCK_SIZE * TEST_BUFFER_BLOCKS];
/* buffer[] was the biggest static in entire bbox */
char *buffer = xmalloc(BLOCK_SIZE * TEST_BUFFER_BLOCKS);
currently_testing = 0;
signal(SIGALRM, alarm_intr);
@ -635,6 +636,7 @@ static void check_blocks(void)
badblocks++;
currently_testing++;
}
free(buffer);
printf("%d bad block(s)\n", badblocks);
}