libbb: introduce and use xrealloc_vector

function                                             old     new   delta
xrealloc_vector_helper                                 -      51     +51
create_list                                           84      99     +15
getopt_main                                          690     695      +5
passwd_main                                         1049    1053      +4
get_cached                                            85      89      +4
msh_main                                            1377    1380      +3
add_match                                             42      41      -1
read_lines                                           720     718      -2
grave                                               1068    1066      -2
fill_match_lines                                     143     141      -2
add_to_dirlist                                        67      65      -2
add_input_file                                        49      47      -2
act                                                  252     250      -2
fsck_main                                           2252    2246      -6
man_main                                             765     757      -8
bb_internal_initgroups                               228     220      -8
cut_main                                            1052    1041     -11
add_edge_to_node                                      55      43     -12
dpkg_main                                           3851    3835     -16
ifupdown_main                                       2202    2178     -24
sort_main                                            838     812     -26
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 5/15 up/down: 82/-124)          Total: -42 bytes
This commit is contained in:
Denis Vlasenko
2008-07-08 05:14:36 +00:00
parent 493829207c
commit deeed59de0
29 changed files with 123 additions and 85 deletions

View File

@ -322,7 +322,7 @@ static void read_lines(void)
}
reached_eof:
last_terminated = terminated;
flines = xrealloc(flines, (max_fline+1) * sizeof(char *));
flines = xrealloc_vector(flines, 8, max_fline);
if (option_mask32 & FLAG_N) {
/* Width of 7 preserves tab spacing in the text */
flines[max_fline] = xasprintf(
@ -332,7 +332,7 @@ static void read_lines(void)
if (terminated)
max_lineno++;
} else {
flines[max_fline] = xrealloc(current_line, strlen(current_line)+1);
flines[max_fline] = xrealloc(current_line, strlen(current_line) + 1);
}
if (max_fline >= MAXLINES) {
eof_error = 0; /* Pretend we saw EOF */
@ -933,7 +933,7 @@ static void fill_match_lines(unsigned pos)
/* and we didn't match it last time */
&& !(num_matches && match_lines[num_matches-1] == pos)
) {
match_lines = xrealloc(match_lines, (num_matches+1) * sizeof(int));
match_lines = xrealloc_vector(match_lines, 4, num_matches);
match_lines[num_matches++] = pos;
}
pos++;

View File

@ -117,11 +117,7 @@ int man_main(int argc UNUSED_PARAM, char **argv)
count_mp++;
/* man_path_list is NULL terminated */
man_path_list[count_mp] = NULL;
if (!(count_mp & 0xf)) { /* 0x10, 0x20 etc */
/* so that last valid man_path_list[] is [count_mp + 0x10] */
man_path_list = xrealloc(man_path_list,
(count_mp + 0x11) * sizeof(man_path_list[0]));
}
man_path_list = xrealloc_vector(man_path_list, 4, count_mp);
}
if (strcmp("MANSECT", line) == 0) {
free(sec_list);