diff options
author | Antony Kellermann | 2018-09-27 12:32:50 -0400 |
---|---|---|
committer | Antony Kellermann | 2018-09-27 12:32:50 -0400 |
commit | f4ee18db14d4023c5abfc4ac8c54b165720598d6 (patch) | |
tree | dd4c7862bd0adc4d1b9991df9fa8794b76cf77aa | |
parent | 8d1351d04f56dd6708af8721144c2239ad86a7e4 (diff) | |
download | aur-f4ee18db14d4023c5abfc4ac8c54b165720598d6.tar.gz |
Fixed segfaults on no internet for gtk
-rw-r--r-- | api.c | 8 | ||||
-rw-r--r-- | gtk_win.c | 14 |
2 files changed, 19 insertions, 3 deletions
@@ -138,6 +138,14 @@ void api_iex_store_info_array(Info_Array* pInfo_Array, Data_Level data_level) { } String* pString = api_iex_get_data_string(symbol_array, pInfo_Array->length, data_level); + if (pString == NULL) { // No internet connection + for (size_t i = 0; i < pInfo_Array->length; i++) + free(symbol_array[i]); + + free(symbol_array); + return; + } + Json* jobj = json_tokener_parse(pString->data); info_array_store_endpoints_json(pInfo_Array, jobj); diff --git a/gtk_win.c b/gtk_win.c index 00f4023e60af..b0267222caa9 100644 --- a/gtk_win.c +++ b/gtk_win.c @@ -141,9 +141,13 @@ void on_load_button_clicked(GtkButton* button) { app.portfolio_data = portfolio_info_array_init_from_portfolio_string(app.portfolio_string); if (app.portfolio_data != NULL) { // If file is not a length 0 JSON array check_list_create_from_string(); - app.last_reload = now; api_store_info_array(app.portfolio_data, DATA_LEVEL_CHECK); - check_list_add_api_data(); + app.last_reload = now; + if (app.portfolio_data->array[0]->api_provider == EMPTY) { + show_generic_message_dialog("No internet connection!", FALSE); + app.last_reload = 0; + } + else check_list_add_api_data(); } GtkButton* lock_button = GTK_BUTTON(GET_OBJECT("lock_button")); @@ -586,7 +590,11 @@ void list_store_update(void) { check_list_create_from_string(); // Will set app.portfolio_data if success if (app.portfolio_data != NULL) { api_store_info_array(app.portfolio_data, DATA_LEVEL_CHECK); - check_list_add_api_data(); + if (app.portfolio_data->array[0]->api_provider == EMPTY) { + show_generic_message_dialog("No internet connection!", FALSE); + app.last_reload = 0; + } + else check_list_add_api_data(); } } |