diff --git a/src/channels.c b/src/channels.c index 2374d57..15036ab 100644 --- a/src/channels.c +++ b/src/channels.c @@ -36,14 +36,13 @@ init_chanarray(Channel** chans) signed int resize_chanarray(Channel** chans) { - unsigned int i = 0; + unsigned int i = get_channelindex(NULL, *chans); Channel* tmp = NULL; - i = get_channelindex(NULL, *chans); LOG(LOG_DEBUG, "Found %i existing channels.", i); if ((tmp = realloc(*chans, (i + 2) * sizeof(Channel))) != NULL) { *chans = tmp; - tmp[i].name = NULL; - tmp[i].key = NULL; + tmp[i+1].name = NULL; + tmp[i+1].key = NULL; } else { LOG(LOG_WARN, "Could not allocate channel struct. " ERRNOFMT, strerror(errno), errno); return -1; diff --git a/src/configuration.c b/src/configuration.c index 453dab3..a3cf214 100644 --- a/src/configuration.c +++ b/src/configuration.c @@ -51,10 +51,10 @@ parse_configfile(char* config_path, Connection* conn) config_setting_lookup_string(chanelem, "name", &name); config_setting_lookup_string(chanelem, "key", &key); LOG(LOG_DEBUG, "Got channel #%i: %s", i, name); - resize_chanarray(&conn->info.channels); if (name != NULL) { set_channel(&conn->info.channels[get_channelindex(name, conn->info.channels)], name, key, true); } + resize_chanarray(&conn->info.channels); } }