aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntony Kellermann2018-09-27 12:32:50 -0400
committerAntony Kellermann2018-09-27 12:32:50 -0400
commitf4ee18db14d4023c5abfc4ac8c54b165720598d6 (patch)
treedd4c7862bd0adc4d1b9991df9fa8794b76cf77aa
parent8d1351d04f56dd6708af8721144c2239ad86a7e4 (diff)
downloadaur-f4ee18db14d4023c5abfc4ac8c54b165720598d6.tar.gz
Fixed segfaults on no internet for gtk
-rw-r--r--api.c8
-rw-r--r--gtk_win.c14
2 files changed, 19 insertions, 3 deletions
diff --git a/api.c b/api.c
index ffc31ced981a..b06de02f166a 100644
--- a/api.c
+++ b/api.c
@@ -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();
}
}