From f2b8a7000aef9b7eecc0396d9bbe0ccfee9b8100 Mon Sep 17 00:00:00 2001 From: ben Date: Tue, 13 Jul 2010 00:24:21 +0200 Subject: fix reallocs that saved pointer only in local vars --- src/sink.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src/sink.c') diff --git a/src/sink.c b/src/sink.c index 38f061b..3622f74 100644 --- a/src/sink.c +++ b/src/sink.c @@ -50,21 +50,23 @@ void sink_check(sink_info** sink) { /* * check the list length and resize the list, if current position = max */ -void sink_list_check(sink_info** sink_list, uint32_t* max, uint32_t counter) { +void sink_list_check(sink_info*** sink_list, uint32_t* max, uint32_t counter) { + if (counter < *max) + return; - if (counter >= (*max)) { - (*max) *= 2; - sink_list = (sink_info**) realloc(sink_list, (*max) * sizeof(sink_info*)); + *max *= 2; + *sink_list = (sink_info**) realloc(*sink_list, (*max) * sizeof(sink_info*)); + + + for (int i = counter; i < *max; ++i) + (*sink_list)[i] = NULL; - for (int i = counter; i < (*max); ++i) - sink_list[i] = NULL; - } } void sink_check_input_list(sink_info* sink) { if (sink->input_counter >= sink->input_max) - sink_input_list_enlarge(sink->input_list, &sink->input_max, sink->input_counter); + sink_input_list_enlarge(&sink->input_list, &sink->input_max, sink->input_counter); } sink_info** sink_list_init(uint32_t max) { -- cgit