mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
cleanup: Add more null checks in tox_new
.
So the rest of the code can assume non-null more.
This commit is contained in:
parent
f13029417e
commit
6cc8ef3771
|
@ -550,7 +550,9 @@ Tox *tox_new(const struct Tox_Options *options, Tox_Err_New *error)
|
||||||
m_options.proxy_info.ip_port.ip.family = net_family_unspec;
|
m_options.proxy_info.ip_port.ip.family = net_family_unspec;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!addr_resolve_or_parse_ip(tox_options_get_proxy_host(opts), &m_options.proxy_info.ip_port.ip, nullptr)) {
|
const char *const proxy_host = tox_options_get_proxy_host(opts);
|
||||||
|
|
||||||
|
if (proxy_host == nullptr || !addr_resolve_or_parse_ip(proxy_host, &m_options.proxy_info.ip_port.ip, nullptr)) {
|
||||||
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PROXY_BAD_HOST);
|
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PROXY_BAD_HOST);
|
||||||
// TODO(irungentoo): TOX_ERR_NEW_PROXY_NOT_FOUND if domain.
|
// TODO(irungentoo): TOX_ERR_NEW_PROXY_NOT_FOUND if domain.
|
||||||
tox_options_free(default_options);
|
tox_options_free(default_options);
|
||||||
|
@ -595,11 +597,7 @@ Tox *tox_new(const struct Tox_Options *options, Tox_Err_New *error)
|
||||||
Messenger_Error m_error;
|
Messenger_Error m_error;
|
||||||
tox->m = new_messenger(tox->mono_time, &m_options, &m_error);
|
tox->m = new_messenger(tox->mono_time, &m_options, &m_error);
|
||||||
|
|
||||||
// TODO(iphydf): Clarify this code, check for NULL before new_groupchats, so
|
if (tox->m == nullptr) {
|
||||||
// new_groupchats can assume m is non-NULL.
|
|
||||||
if (new_groupchats(tox->mono_time, tox->m) == nullptr) {
|
|
||||||
kill_messenger(tox->m);
|
|
||||||
|
|
||||||
if (m_error == MESSENGER_ERROR_PORT) {
|
if (m_error == MESSENGER_ERROR_PORT) {
|
||||||
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PORT_ALLOC);
|
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PORT_ALLOC);
|
||||||
} else if (m_error == MESSENGER_ERROR_TCP_SERVER) {
|
} else if (m_error == MESSENGER_ERROR_TCP_SERVER) {
|
||||||
|
@ -621,6 +619,24 @@ Tox *tox_new(const struct Tox_Options *options, Tox_Err_New *error)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (new_groupchats(tox->mono_time, tox->m) == nullptr) {
|
||||||
|
kill_messenger(tox->m);
|
||||||
|
|
||||||
|
mono_time_free(tox->mono_time);
|
||||||
|
tox_options_free(default_options);
|
||||||
|
unlock(tox);
|
||||||
|
|
||||||
|
if (tox->mutex != nullptr) {
|
||||||
|
pthread_mutex_destroy(tox->mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(tox->mutex);
|
||||||
|
free(tox);
|
||||||
|
|
||||||
|
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_MALLOC);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
if (load_savedata_tox
|
if (load_savedata_tox
|
||||||
&& tox_load(tox, tox_options_get_savedata_data(opts), tox_options_get_savedata_length(opts)) == -1) {
|
&& tox_load(tox, tox_options_get_savedata_data(opts), tox_options_get_savedata_length(opts)) == -1) {
|
||||||
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_LOAD_BAD_FORMAT);
|
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_LOAD_BAD_FORMAT);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user