Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gthumb for openSUSE:Factory checked in at 2026-02-12 17:26:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gthumb (Old) and /work/SRC/openSUSE:Factory/.gthumb.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gthumb" Thu Feb 12 17:26:42 2026 rev:129 rq:1332561 version:3.12.10 Changes: -------- --- /work/SRC/openSUSE:Factory/gthumb/gthumb.changes 2026-01-26 11:05:44.918595837 +0100 +++ /work/SRC/openSUSE:Factory/.gthumb.new.1977/gthumb.changes 2026-02-12 17:27:40.516075144 +0100 @@ -1,0 +2,6 @@ +Tue Feb 10 10:23:39 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 3.12.10: + + Bugfix: Fixed potential crash + +------------------------------------------------------------------- Old: ---- gthumb-3.12.9.obscpio New: ---- gthumb-3.12.10.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gthumb.spec ++++++ --- /var/tmp/diff_new_pack.cMvvD9/_old 2026-02-12 17:27:43.448199532 +0100 +++ /var/tmp/diff_new_pack.cMvvD9/_new 2026-02-12 17:27:43.468200381 +0100 @@ -17,7 +17,7 @@ Name: gthumb -Version: 3.12.9 +Version: 3.12.10 Release: 0 # FIXME: Add libchamplain BuildRequires once the map feature is considered stable. Summary: An Image Viewer and Browser for GNOME ++++++ _service ++++++ --- /var/tmp/diff_new_pack.cMvvD9/_old 2026-02-12 17:27:43.728211411 +0100 +++ /var/tmp/diff_new_pack.cMvvD9/_new 2026-02-12 17:27:43.760212769 +0100 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/gthumb.git</param> - <param name="revision">3.12.9</param> + <param name="revision">3.12.10</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">v?(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ gthumb-3.12.9.obscpio -> gthumb-3.12.10.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/NEWS new/gthumb-3.12.10/NEWS --- old/gthumb-3.12.9/NEWS 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/NEWS 2026-02-10 07:54:11.000000000 +0100 @@ -1,3 +1,10 @@ +Version 3.12.10 +~~~~~~~~~~~~~~~ +Released: 2026-02-10 + +Bugfixes: + * Fixed potential crash + Version 3.12.9 ~~~~~~~~~~~~~~ Released: 2026-01-23 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/extensions/comments/gth-import-metadata-task.c new/gthumb-3.12.10/extensions/comments/gth-import-metadata-task.c --- old/gthumb-3.12.9/extensions/comments/gth-import-metadata-task.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/extensions/comments/gth-import-metadata-task.c 2026-02-10 07:54:11.000000000 +0100 @@ -165,6 +165,7 @@ file_data_list = _g_query_metadata_finish (res, &error); if (error != NULL) { gth_task_completed (GTH_TASK (self), error); + _g_object_list_unref (file_data_list); return; } @@ -187,6 +188,7 @@ } gth_task_completed (GTH_TASK (self), NULL); + _g_object_list_unref (file_data_list); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/extensions/desktop_background/actions.c new/gthumb-3.12.10/extensions/desktop_background/actions.c --- old/gthumb-3.12.9/extensions/desktop_background/actions.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/extensions/desktop_background/actions.c 2026-02-10 07:54:11.000000000 +0100 @@ -393,6 +393,7 @@ if (error != NULL) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error); wallpaper_data_free (wdata); + _g_object_list_unref (file_list); return; } @@ -420,6 +421,7 @@ wdata->new_style.background_style = BACKGROUND_STYLE_ZOOM; wallpaper_data_set__step2 (wdata); + _g_object_list_unref (file_list); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/extensions/exiv2_tools/exiv2-utils.cpp new/gthumb-3.12.10/extensions/exiv2_tools/exiv2-utils.cpp --- old/gthumb-3.12.9/extensions/exiv2_tools/exiv2-utils.cpp 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/extensions/exiv2_tools/exiv2-utils.cpp 2026-02-10 07:54:11.000000000 +0100 @@ -328,7 +328,7 @@ GthStringList *string_list; list = NULL; - for (int i = 0; i < value.count(); i++) + for (size_t i = 0; i < value.count(); i++) list = g_list_prepend (list, g_strdup (value.toString(i).c_str())); string_list = gth_string_list_new (g_list_reverse (list)); g_object_set (metadata, "string-list", string_list, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/extensions/image_print/gth-image-print-job.c new/gthumb-3.12.10/extensions/image_print/gth-image-print-job.c --- old/gthumb-3.12.9/extensions/image_print/gth-image-print-job.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/extensions/image_print/gth-image-print-job.c 2026-02-10 07:54:11.000000000 +0100 @@ -1154,10 +1154,12 @@ gpointer user_data) { GthImagePrintJob *self = user_data; + GList *files; GError *error; - _g_query_metadata_finish (result, &error); + files = _g_query_metadata_finish (result, &error); gth_image_print_job_update_preview (self); + _g_object_list_unref (files); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/extensions/image_print/gth-load-image-info-task.c new/gthumb-3.12.10/extensions/image_print/gth-load-image-info-task.c --- old/gthumb-3.12.9/extensions/image_print/gth-load-image-info-task.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/extensions/image_print/gth-load-image-info-task.c 2026-02-10 07:54:11.000000000 +0100 @@ -73,15 +73,18 @@ gpointer user_data) { GthLoadImageInfoTask *self = user_data; + GList *files; GError *error = NULL; - _g_query_metadata_finish (result, &error); + files = _g_query_metadata_finish (result, &error); if (error != NULL) { gth_task_completed (GTH_TASK (self), error); + _g_object_list_unref (files); return; } load_next_image (self); + _g_object_list_unref (files); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/extensions/list_tools/gth-script-task.c new/gthumb-3.12.10/extensions/list_tools/gth-script-task.c --- old/gthumb-3.12.9/extensions/list_tools/gth-script-task.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/extensions/list_tools/gth-script-task.c 2026-02-10 07:54:11.000000000 +0100 @@ -251,15 +251,18 @@ gpointer user_data) { GthScriptTask *self = user_data; + GList *files; GError *error = NULL; - _g_query_metadata_finish (result, &error); + files = _g_query_metadata_finish (result, &error); if (error != NULL) { gth_task_completed (GTH_TASK (self), error); + _g_object_list_unref (files); return; } _gth_script_task_exec (self); + _g_object_list_unref (files); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/gthumb/gio-utils.c new/gthumb-3.12.10/gthumb/gio-utils.c --- old/gthumb-3.12.9/gthumb/gio-utils.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/gthumb/gio-utils.c 2026-02-10 07:54:11.000000000 +0100 @@ -289,6 +289,7 @@ } for_each_child_read_next_child_metadata (fec); + _g_object_list_unref (files); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/gthumb/gth-browser.c new/gthumb-3.12.10/gthumb/gth-browser.c --- old/gthumb-3.12.9/gthumb/gth-browser.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/gthumb/gth-browser.c 2026-02-10 07:54:11.000000000 +0100 @@ -1637,10 +1637,12 @@ files = _g_query_metadata_finish (result, &error); if (error != NULL) { load_data_error (load_data, error); + _g_object_list_unref (files); return; } load_data_continue (load_data, files); + _g_object_list_unref (files); } @@ -2071,7 +2073,7 @@ gth_browser_set_viewer_widget (browser, NULL); g_object_unref (browser->priv->viewer_page); browser->priv->viewer_page = NULL; - gth_image_preloader_clear_cache (browser->priv->image_preloader); + gth_image_preloader_stop (browser->priv->image_preloader); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/gthumb/gth-file-properties.c new/gthumb-3.12.10/gthumb/gth-file-properties.c --- old/gthumb-3.12.9/gthumb/gth-file-properties.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/gthumb/gth-file-properties.c 2026-02-10 07:54:11.000000000 +0100 @@ -218,8 +218,14 @@ char *tmp_value; utf8_value = _g_utf8_from_any (value); - if (g_utf8_strlen (utf8_value, -1) > MAX_ATTRIBUTE_LENGTH) - g_utf8_strncpy (g_utf8_offset_to_pointer (utf8_value, MAX_ATTRIBUTE_LENGTH - 1), "…", 1); + if (g_utf8_strlen (utf8_value, -1) > MAX_ATTRIBUTE_LENGTH) { + char *truncated = g_utf8_substring (utf8_value, 0, MAX_ATTRIBUTE_LENGTH); + if (truncated != NULL) { + g_free (utf8_value); + utf8_value = g_strconcat (truncated, "…", NULL); + g_free (truncated); + } + } tmp_value = _g_utf8_replace_pattern (utf8_value, "[\r\n]", " "); g_free (value); value = tmp_value; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/gthumb/gth-image-preloader.c new/gthumb-3.12.10/gthumb/gth-image-preloader.c --- old/gthumb-3.12.9/gthumb/gth-image-preloader.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/gthumb/gth-image-preloader.c 2026-02-10 07:54:11.000000000 +0100 @@ -78,6 +78,7 @@ GthImageLoader *loader; GQueue *cache; GthICCProfile *out_profile; + gboolean stopped; }; @@ -236,24 +237,32 @@ static void -gth_image_preloader_finalize (GObject *object) +gth_image_preloader_clear_requests (GthImagePreloader *self) { - GthImagePreloader *self; - GList *scan; - - g_return_if_fail (object != NULL); - g_return_if_fail (GTH_IS_IMAGE_PRELOADER (object)); - - self = GTH_IMAGE_PRELOADER (object); + GList *scan; for (scan = self->priv->requests; scan; scan = scan->next) { LoadRequest *request = scan->data; - request->finalized = TRUE; load_request_unref (request); } g_list_free (self->priv->requests); + self->priv->requests = NULL; + self->priv->current_request = NULL; +} + +static void +gth_image_preloader_finalize (GObject *object) +{ + GthImagePreloader *self; + + g_return_if_fail (object != NULL); + g_return_if_fail (GTH_IS_IMAGE_PRELOADER (object)); + + self = GTH_IMAGE_PRELOADER (object); + + gth_image_preloader_clear_requests (self); g_object_unref (self->priv->loader); _g_object_unref (self->priv->out_profile); g_queue_free_full (self->priv->cache, (GDestroyNotify) cache_data_unref); @@ -281,6 +290,7 @@ self->priv->loader = gth_image_loader_new (NULL, NULL); self->priv->cache = g_queue_new (); self->priv->out_profile = NULL; + self->priv->stopped = FALSE; } @@ -403,8 +413,10 @@ /* Check whether the request is still relevant. */ - if ((self->priv->requests == NULL) || (self->priv->requests->data != request)) + if ((self->priv->requests == NULL) || (self->priv->requests->data != request)) { _gth_image_preloader_start_last_request (self); + return; + } /* Queue the next file. */ @@ -446,6 +458,7 @@ typedef struct { + GthImagePreloader *preloader; LoadRequest *request; GList *requested_file; gboolean resize_to_requested_size; @@ -453,12 +466,14 @@ static LoadData * -load_data_new (LoadRequest *request, +load_data_new (GthImagePreloader *preloader, + LoadRequest *request, gboolean resize_image) { LoadData *load_data; load_data = g_new0 (LoadData, 1); + load_data->preloader = g_object_ref (preloader); load_data->request = load_request_ref (request); load_data->requested_file = request->current_file; load_data->resize_to_requested_size = resize_image; @@ -470,6 +485,7 @@ static void load_data_free (LoadData *load_data) { + g_object_unref (load_data->preloader); load_request_unref (load_data->request); g_free (load_data); } @@ -503,7 +519,7 @@ { LoadData *load_data = user_data; LoadRequest *request = load_data->request; - GthImagePreloader *self = request->preloader; + GthImagePreloader *self = load_data->preloader; GthImage *image = NULL; int original_width; int original_height; @@ -521,7 +537,8 @@ &loaded_original, &error); - if (request->finalized + if (self->priv->stopped + || request->finalized || g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) || (self->priv->requests == NULL) || (self->priv->requests->data != request)) @@ -539,7 +556,7 @@ } cache_data = cache_data_new (); - cache_data->file_data = g_object_ref (request->current_file->data); + cache_data->file_data = _g_object_ref (request->current_file->data); cache_data->image = success ? _g_object_ref (image) : NULL; cache_data->original_width = success ? original_width : -1; cache_data->original_height = success ? original_height : -1; @@ -624,7 +641,7 @@ (request->current_file == request->files) ? G_PRIORITY_HIGH : G_PRIORITY_DEFAULT, request->cancellable, image_loader_ready_cb, - load_data_new (request, ignore_requested_size)); + load_data_new (self, request, ignore_requested_size)); } @@ -711,6 +728,8 @@ g_print ("request modified image @%d\n", requested_size); #endif + self->priv->stopped = FALSE; + request = load_request_new (self); request->requested_size = requested_size; request->files = g_list_prepend (request->files, gth_file_data_dup (requested)); @@ -853,3 +872,19 @@ g_queue_free_full (self->priv->cache, (GDestroyNotify) cache_data_unref); self->priv->cache = g_queue_new (); } + + +void +gth_image_preloader_stop (GthImagePreloader *self) +{ + g_return_if_fail (self != NULL); + self->priv->stopped = TRUE; + if (self->priv->current_request != NULL) { + if (!self->priv->current_request->cancelling && self->priv->current_request->loading) { + self->priv->current_request->cancelling = TRUE; + g_cancellable_cancel (self->priv->current_request->cancellable); + } + } + gth_image_preloader_clear_requests (self); + gth_image_preloader_clear_cache (self); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/gthumb/gth-image-preloader.h new/gthumb-3.12.10/gthumb/gth-image-preloader.h --- old/gthumb-3.12.9/gthumb/gth-image-preloader.h 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/gthumb/gth-image-preloader.h 2026-02-10 07:54:11.000000000 +0100 @@ -73,5 +73,6 @@ GthImage *image); cairo_surface_t * gth_image_preloader_get_modified_image (GthImagePreloader *self); void gth_image_preloader_clear_cache (GthImagePreloader *self); +void gth_image_preloader_stop (GthImagePreloader *self); #endif /* GTH_IMAGE_PRELOADER_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/gthumb/gth-metadata-provider.c new/gthumb-3.12.10/gthumb/gth-metadata-provider.c --- old/gthumb-3.12.9/gthumb/gth-metadata-provider.c 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/gthumb/gth-metadata-provider.c 2026-02-10 07:54:11.000000000 +0100 @@ -282,7 +282,7 @@ qmd = g_task_get_task_data (G_TASK (result)); - return qmd->files; + return _g_object_list_ref (qmd->files); } @@ -424,6 +424,7 @@ qam->ready_func (NULL, error, qam->user_data); query_all_metadata_free (qam); + _g_object_list_unref (files); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gthumb-3.12.9/meson.build new/gthumb-3.12.10/meson.build --- old/gthumb-3.12.9/meson.build 2026-01-23 08:54:29.000000000 +0100 +++ new/gthumb-3.12.10/meson.build 2026-02-10 07:54:11.000000000 +0100 @@ -1,6 +1,6 @@ project('gthumb', ['c', 'cpp'], license : 'GPL2+', - version : '3.12.9', + version : '3.12.10', meson_version : '>=0.59' ) ++++++ gthumb.obsinfo ++++++ --- /var/tmp/diff_new_pack.cMvvD9/_old 2026-02-12 17:27:47.096354298 +0100 +++ /var/tmp/diff_new_pack.cMvvD9/_new 2026-02-12 17:27:47.100354467 +0100 @@ -1,5 +1,5 @@ name: gthumb -version: 3.12.9 -mtime: 1769154869 -commit: b1490527e8638611da65fcf0431bf58e07d23286 +version: 3.12.10 +mtime: 1770706451 +commit: 350d84a408a96aeb120e7b2978abbfaba3181b08
