summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColomban Wendling <[email protected]>2025-06-25 11:29:04 +0200
committerColomban Wendling <[email protected]>2025-06-25 11:29:04 +0200
commit492b20b5e1ebe7f2eb99c87f998d41f9df35b87d (patch)
tree8d446909bc4d26307227a061fc27fe203ad67a98
parentbfad4da5b243c6353b21e499813c0a80790d3f98 (diff)
downloadengrampa-datetime-failure.tar.bz2
engrampa-datetime-failure.tar.xz
Avoid critical errors with invalid datesdatetime-failure
This likely should not happen with valid dates, but can if a archiver reports invalid ones for whatever reason (legitimate weird dates, or parser failures for example).
-rw-r--r--src/dlg-prop.c10
-rw-r--r--src/fr-window.c16
2 files changed, 18 insertions, 8 deletions
diff --git a/src/dlg-prop.c b/src/dlg-prop.c
index cb8ed87..e82d5f1 100644
--- a/src/dlg-prop.c
+++ b/src/dlg-prop.c
@@ -101,10 +101,12 @@ dlg_prop (FrWindow *window)
GDateTime *date_time;
date_time = g_date_time_new_from_unix_local (get_file_mtime (fr_window_get_archive_uri (window)));
- s = g_date_time_format (date_time, _("%d %B %Y, %H:%M"));
- g_date_time_unref (date_time);
- gtk_label_set_text (GET_LABEL ("p_date_label"), s);
- g_free (s);
+ if (date_time) {
+ s = g_date_time_format (date_time, _("%d %B %Y, %H:%M"));
+ g_date_time_unref (date_time);
+ gtk_label_set_text (GET_LABEL ("p_date_label"), s);
+ g_free (s);
+ }
/**/
diff --git a/src/fr-window.c b/src/fr-window.c
index e86f7e0..d1ce30c 100644
--- a/src/fr-window.c
+++ b/src/fr-window.c
@@ -1493,8 +1493,12 @@ fr_window_populate_file_list (FrWindow *window,
} else {
GDateTime *date_time;
date_time = g_date_time_new_from_unix_local (fdata->modified);
- s_time = g_date_time_format (date_time, _("%d %B %Y, %H:%M"));
- g_date_time_unref (date_time);
+ if (! date_time) {
+ s_time = g_strdup ("");
+ } else {
+ s_time = g_date_time_format (date_time, _("%d %B %Y, %H:%M"));
+ g_date_time_unref (date_time);
+ }
}
gtk_list_store_set (window->priv->list_store, &iter,
@@ -1522,8 +1526,12 @@ fr_window_populate_file_list (FrWindow *window,
s_size = g_format_size (fdata->size);
date_time = g_date_time_new_from_unix_local (fdata->modified);
- s_time = g_date_time_format (date_time, _("%d %B %Y, %H:%M"));
- g_date_time_unref (date_time);
+ if (! date_time) {
+ s_time = g_strdup("");
+ } else {
+ s_time = g_date_time_format (date_time, _("%d %B %Y, %H:%M"));
+ g_date_time_unref (date_time);
+ }
desc = g_content_type_get_description (fdata->content_type);
gtk_list_store_set (window->priv->list_store, &iter,