diff options
| author | itojun <itojun@NetBSD.org> | 2003-09-19 05:52:48 +0000 |
|---|---|---|
| committer | itojun <itojun@NetBSD.org> | 2003-09-19 05:52:48 +0000 |
| commit | 4698292ea9e6a40848c67f5f5f05d5d6d767cc53 (patch) | |
| tree | d311d9be7918c0fe1184441407ab608cc9d00808 /libexec | |
| parent | ba0ee95e6c3cfc1be95e3bd49875e6605d2d3b26 (diff) | |
realloc pedannt
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/lfs_cleanerd/library.c | 14 | ||||
| -rw-r--r-- | libexec/telnetd/sys_term.c | 11 |
2 files changed, 15 insertions, 10 deletions
diff --git a/libexec/lfs_cleanerd/library.c b/libexec/lfs_cleanerd/library.c index b71a511d0cd..7b73dfdac8c 100644 --- a/libexec/lfs_cleanerd/library.c +++ b/libexec/lfs_cleanerd/library.c @@ -1,4 +1,4 @@ -/* $NetBSD: library.c,v 1.37 2003/08/07 09:46:43 agc Exp $ */ +/* $NetBSD: library.c,v 1.38 2003/09/19 05:52:48 itojun Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)library.c 8.3 (Berkeley) 5/24/95"; #else -__RCSID("$NetBSD: library.c,v 1.37 2003/08/07 09:46:43 agc Exp $"); +__RCSID("$NetBSD: library.c,v 1.38 2003/09/19 05:52:48 itojun Exp $"); #endif #endif /* not lint */ @@ -403,7 +403,7 @@ pseg_size(daddr_t pseg_addr, FS_INFO *fsp, SEGSUM *sp) int lfs_segmapv(FS_INFO *fsp, int seg, caddr_t seg_buf, BLOCK_INFO **blocks, int *bcount) { - BLOCK_INFO *bip, *_bip; + BLOCK_INFO *bip, *_bip, *nbip; SEGSUM *sp; SEGUSE *sup; FINFO *fip; @@ -475,10 +475,12 @@ lfs_segmapv(FS_INFO *fsp, int seg, caddr_t seg_buf, BLOCK_INFO **blocks, int *bc #endif if (*bcount + nblocks + sp->ss_ninos > nelem) { - nelem = *bcount + nblocks + sp->ss_ninos; - bip = realloc(bip, nelem * sizeof(BLOCK_INFO)); - if (!bip) + nbip = realloc(bip, (*bcount + nblocks + sp->ss_ninos) * + sizeof(BLOCK_INFO)); + if (!nbip) goto err0; + bip = nbip; + nelem = *bcount + nblocks + sp->ss_ninos; } add_blocks(fsp, bip, bcount, sp, seg_buf, seg_addr, pseg_addr); add_inodes(fsp, bip, bcount, sp, seg_buf, seg_addr); diff --git a/libexec/telnetd/sys_term.c b/libexec/telnetd/sys_term.c index 439cdce3430..4565b7dd704 100644 --- a/libexec/telnetd/sys_term.c +++ b/libexec/telnetd/sys_term.c @@ -1,4 +1,4 @@ -/* $NetBSD: sys_term.c,v 1.39 2003/08/07 09:46:52 agc Exp $ */ +/* $NetBSD: sys_term.c,v 1.40 2003/09/19 05:54:46 itojun Exp $ */ /* * Copyright (c) 1989, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)sys_term.c 8.4+1 (Berkeley) 5/30/95"; #else -__RCSID("$NetBSD: sys_term.c,v 1.39 2003/08/07 09:46:52 agc Exp $"); +__RCSID("$NetBSD: sys_term.c,v 1.40 2003/09/19 05:54:46 itojun Exp $"); #endif #endif /* not lint */ @@ -700,6 +700,7 @@ addarg(argv, val) register char *val; { register char **cpp; + char **nargv; if (argv == NULL) { /* @@ -715,12 +716,14 @@ addarg(argv, val) ; if (cpp == &argv[(long)argv[-1]]) { --argv; - *argv = (char *)((long)(*argv) + 10); - argv = (char **)realloc(argv, sizeof(*argv) * ((long)(*argv) + 2)); + nargv = (char **)realloc(argv, + sizeof(*argv) * ((long)(*argv) + 10 + 2)); if (argv == NULL) { fatal(net, "not enough memory"); /*NOTREACHED*/ } + argv = nargv; + *argv = (char *)((long)(*argv) + 10); argv++; cpp = &argv[(long)argv[-1] - 10]; } |
