Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fcft for openSUSE:Factory checked in 
at 2025-07-17 17:18:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fcft (Old)
 and      /work/SRC/openSUSE:Factory/.fcft.new.8875 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fcft"

Thu Jul 17 17:18:43 2025 rev:24 rq:1293844 version:3.3.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/fcft/fcft.changes        2025-03-17 
22:23:10.704482331 +0100
+++ /work/SRC/openSUSE:Factory/.fcft.new.8875/fcft.changes      2025-07-17 
17:19:55.010626498 +0200
@@ -1,0 +2,8 @@
+Wed Jul 16 15:06:04 UTC 2025 - Arnav Singh <opens...@arnavion.dev>
+
+- Updated to 3.3.2:
+  * Fixed crash when failing to load a font.
+  * Fixed memory leak in fcft_fini() if the font cache contained entries for
+    fonts that had failed to load.
+
+-------------------------------------------------------------------

Old:
----
  fcft-3.3.1.tar.gz
  fcft-3.3.1.tar.gz.sig

New:
----
  fcft-3.3.2.tar.gz
  fcft-3.3.2.tar.gz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fcft.spec ++++++
--- /var/tmp/diff_new_pack.zXBx59/_old  2025-07-17 17:19:55.770658171 +0200
+++ /var/tmp/diff_new_pack.zXBx59/_new  2025-07-17 17:19:55.770658171 +0200
@@ -18,7 +18,7 @@
 
 %define libname libfcft4
 Name:           fcft
-Version:        3.3.1
+Version:        3.3.2
 Release:        0
 Summary:        A library for font loading and glyph rasterization using 
FreeType/pixman
 License:        MIT

++++++ fcft-3.3.1.tar.gz -> fcft-3.3.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/CHANGELOG.md new/fcft-3.3.2/CHANGELOG.md
--- old/fcft-3.3.1/CHANGELOG.md 2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/CHANGELOG.md 2025-07-16 11:40:37.000000000 +0200
@@ -1,5 +1,6 @@
 # Changelog
 
+* [3.3.2](#3-3-2)
 * [3.3.1](#3-3-1)
 * [3.3.0](#3-3-0)
 * [3.2.0](#3-2-0)
@@ -45,6 +46,20 @@
 * [1.1.7](#1-1-7)
 
 
+## 3.3.2
+
+### Fixed
+
+* Crash when failing to load a font.
+* Memory leak in `fcft_fini()` if the font cache contained entries for
+  fonts that failed to load.
+
+
+### Contributors
+
+* markstos
+
+
 ## 3.3.1
 
 ### Fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/PKGBUILD new/fcft-3.3.2/PKGBUILD
--- old/fcft-3.3.1/PKGBUILD     2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/PKGBUILD     2025-07-16 11:40:37.000000000 +0200
@@ -1,5 +1,5 @@
 pkgname=fcft
-pkgver=3.3.1
+pkgver=3.3.2
 pkgrel=1
 pkgdesc="Simple font loading and glyph rasterization library"
 changelog=CHANGELOG.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/README.md new/fcft-3.3.2/README.md
--- old/fcft-3.3.1/README.md    2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/README.md    2025-07-16 11:40:37.000000000 +0200
@@ -21,7 +21,7 @@
 allows foot to make full use of its multiple worker (rendering)
 threads.
 
-Feature wise, it sits somewhere between Cairo, pango. Compared to
+Feature wise, it sits somewhere between Cairo and pango. Compared to
 Cairo, it does **not** do generic 2D graphics, but it **does** do more
 advanced font shaping.
 
@@ -207,3 +207,11 @@
 
 fcft uses Unicode data files released under the [Unicode License
 V3](https://www.unicode.org/license.txt).
+
+
+# Sponsoring/donations
+
+* Liberapay: https://liberapay.com/dnkl
+* GitHub Sponsors: https://github.com/sponsors/dnkl
+
+[![Donate using 
Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/dnkl/donate)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_capabilities.3.scd 
new/fcft-3.3.2/doc/fcft_capabilities.3.scd
--- old/fcft-3.3.1/doc/fcft_capabilities.3.scd  2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_capabilities.3.scd  2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_capabilities(3) "3.3.1" "fcft"
+fcft_capabilities(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_clone.3.scd 
new/fcft-3.3.2/doc/fcft_clone.3.scd
--- old/fcft-3.3.1/doc/fcft_clone.3.scd 2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_clone.3.scd 2025-07-16 11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_clone(3) "3.3.1" "fcft"
+fcft_clone(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_destroy.3.scd 
new/fcft-3.3.2/doc/fcft_destroy.3.scd
--- old/fcft-3.3.1/doc/fcft_destroy.3.scd       2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_destroy.3.scd       2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_destroy(3) "3.3.1" "fcft"
+fcft_destroy(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_fini.3.scd 
new/fcft-3.3.2/doc/fcft_fini.3.scd
--- old/fcft-3.3.1/doc/fcft_fini.3.scd  2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_fini.3.scd  2025-07-16 11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_fini(3) "3.3.1" "fcft"
+fcft_fini(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_font_options_create.3.scd 
new/fcft-3.3.2/doc/fcft_font_options_create.3.scd
--- old/fcft-3.3.1/doc/fcft_font_options_create.3.scd   2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_font_options_create.3.scd   2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_font_options_create(3) "3.3.1" "fcft"
+fcft_font_options_create(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_font_options_destroy.3.scd 
new/fcft-3.3.2/doc/fcft_font_options_destroy.3.scd
--- old/fcft-3.3.1/doc/fcft_font_options_destroy.3.scd  2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_font_options_destroy.3.scd  2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_font_options_destroy(3) "3.3.1" "fcft"
+fcft_font_options_destroy(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_from_name.3.scd 
new/fcft-3.3.2/doc/fcft_from_name.3.scd
--- old/fcft-3.3.1/doc/fcft_from_name.3.scd     2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_from_name.3.scd     2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_from_name(3) "3.3.1" "fcft"
+fcft_from_name(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_from_name2.3.scd 
new/fcft-3.3.2/doc/fcft_from_name2.3.scd
--- old/fcft-3.3.1/doc/fcft_from_name2.3.scd    2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_from_name2.3.scd    2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_from_name(3) "3.3.1" "fcft"
+fcft_from_name(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_init.3.scd 
new/fcft-3.3.2/doc/fcft_init.3.scd
--- old/fcft-3.3.1/doc/fcft_init.3.scd  2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_init.3.scd  2025-07-16 11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_init(3) "3.3.1" "fcft"
+fcft_init(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_kerning.3.scd 
new/fcft-3.3.2/doc/fcft_kerning.3.scd
--- old/fcft-3.3.1/doc/fcft_kerning.3.scd       2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_kerning.3.scd       2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_kerning(3) "3.3.1" "fcft"
+fcft_kerning(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_log_init.3.scd 
new/fcft-3.3.2/doc/fcft_log_init.3.scd
--- old/fcft-3.3.1/doc/fcft_log_init.3.scd      2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_log_init.3.scd      2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_log_init(3) "3.3.1" "fcft"
+fcft_log_init(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_precompose.3.scd 
new/fcft-3.3.2/doc/fcft_precompose.3.scd
--- old/fcft-3.3.1/doc/fcft_precompose.3.scd    2025-03-13 13:17:15.000000000 
+0100
+++ new/fcft-3.3.2/doc/fcft_precompose.3.scd    2025-07-16 11:40:37.000000000 
+0200
@@ -1,4 +1,4 @@
-fcft_precompose(3) "3.3.1" "fcft"
+fcft_precompose(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_rasterize_char_utf32.3.scd 
new/fcft-3.3.2/doc/fcft_rasterize_char_utf32.3.scd
--- old/fcft-3.3.1/doc/fcft_rasterize_char_utf32.3.scd  2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_rasterize_char_utf32.3.scd  2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_rasterize_char_utf32(3) "3.3.1" "fcft"
+fcft_rasterize_char_utf32(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_rasterize_grapheme_utf32.3.scd 
new/fcft-3.3.2/doc/fcft_rasterize_grapheme_utf32.3.scd
--- old/fcft-3.3.1/doc/fcft_rasterize_grapheme_utf32.3.scd      2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_rasterize_grapheme_utf32.3.scd      2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_rasterize_grapheme_utf32(3) "3.3.1" "fcft"
+fcft_rasterize_grapheme_utf32(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_rasterize_text_run_utf32.3.scd 
new/fcft-3.3.2/doc/fcft_rasterize_text_run_utf32.3.scd
--- old/fcft-3.3.1/doc/fcft_rasterize_text_run_utf32.3.scd      2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_rasterize_text_run_utf32.3.scd      2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_rasterize_text_run_utf32(3) "3.3.1" "fcft"
+fcft_rasterize_text_run_utf32(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_set_emoji_presentation.3.scd 
new/fcft-3.3.2/doc/fcft_set_emoji_presentation.3.scd
--- old/fcft-3.3.1/doc/fcft_set_emoji_presentation.3.scd        2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_set_emoji_presentation.3.scd        2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_set_emoji_presentation(3) "3.3.1" "fcft"
+fcft_set_emoji_presentation(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_set_scaling_filter.3.scd 
new/fcft-3.3.2/doc/fcft_set_scaling_filter.3.scd
--- old/fcft-3.3.1/doc/fcft_set_scaling_filter.3.scd    2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_set_scaling_filter.3.scd    2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_set_scaling_filter(3) "3.3.1" "fcft"
+fcft_set_scaling_filter(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/doc/fcft_text_run_destroy.3.scd 
new/fcft-3.3.2/doc/fcft_text_run_destroy.3.scd
--- old/fcft-3.3.1/doc/fcft_text_run_destroy.3.scd      2025-03-13 
13:17:15.000000000 +0100
+++ new/fcft-3.3.2/doc/fcft_text_run_destroy.3.scd      2025-07-16 
11:40:37.000000000 +0200
@@ -1,4 +1,4 @@
-fcft_text_run_destroy(3) "3.3.1" "fcft"
+fcft_text_run_destroy(3) "3.3.2" "fcft"
 
 # NAME
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/example/main.c 
new/fcft-3.3.2/example/main.c
--- old/fcft-3.3.1/example/main.c       2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/example/main.c       2025-07-16 11:40:37.000000000 +0200
@@ -409,6 +409,8 @@
 int
 main(int argc, char *const *argv)
 {
+    int exit_code = EXIT_SUCCESS;
+
     const char *locale = setlocale(LC_CTYPE, "");
     if (!locale_is_utf8()) {
         /* Try to force an UTF-8 locale */
@@ -633,11 +635,14 @@
         options->emoji_presentation = emoji_presentation;
 
         font = fcft_from_name2(tll_length(font_names), names, NULL, options);
-        assert(font != NULL);
-
         fcft_font_options_destroy(options);
         tll_free(font_names);
         free(copy);
+
+        if (font == NULL) {
+            exit_code = EXIT_FAILURE;
+            goto err;
+        }
     }
 
     display = wl_display_connect(NULL);
@@ -707,8 +712,6 @@
     sigaction(SIGQUIT, &sig_action, NULL);
     sigaction(SIGTERM, &sig_action, NULL);
 
-    int exit_code = EXIT_SUCCESS;
-
     while (!aborted) {
         wl_display_flush(display);
 
@@ -739,6 +742,7 @@
             wl_display_dispatch(display);
     }
 
+err:
     if (deco != NULL)
         zxdg_toplevel_decoration_v1_destroy(deco);
     if (toplevel != NULL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/fcft.c new/fcft-3.3.2/fcft.c
--- old/fcft-3.3.1/fcft.c       2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/fcft.c       2025-07-16 11:40:37.000000000 +0200
@@ -283,10 +283,16 @@
 fcft_fini(void)
 {
     while (tll_length(font_cache) > 0) {
-        if (tll_front(font_cache).font == NULL)
+        struct fcft_font_cache_entry *e = &tll_front(font_cache);
+
+        if (e->font == NULL) {
+            for (size_t i = 0; i < e->name_count; i++)
+                free(e->names[i]);
+            free(e->names);
+            free(e->attributes);
             tll_pop_front(font_cache);
-        else
-            fcft_destroy(&tll_front(font_cache).font->public);
+        } else
+            fcft_destroy(&e->font->public);
     }
 
     assert(tll_length(font_cache) == 0);
@@ -1186,16 +1192,12 @@
                 if (!grapheme_cache_lock_failed)
                     pthread_rwlock_destroy(&font->grapheme_cache_lock);
 #endif
-                if (!pattern_failed)
-                    free(primary);
+                free(primary);
                 free(font);
                 font = NULL;
                 free(glyph_cache_table);
                 free(grapheme_cache_table);
 fc_destroy:
-                if (langset != NULL)
-                    FcLangSetDestroy(langset);
-                FcCharSetDestroy(charset);
                 FcPatternDestroy(pattern);
                 FcPatternDestroy(base_pattern);
                 FcFontSetDestroy(set);
@@ -2732,7 +2734,7 @@
     }
 
     /* Re-alloc glyphs/cluster arrays */
-    {
+    if (run.public->count > 0) {
         const struct fcft_glyph **final_glyphs = realloc(
             run.public->glyphs, run.public->count * sizeof(final_glyphs[0]));
         int *final_cluster = realloc(
@@ -2748,6 +2750,12 @@
 
         run.public->glyphs = final_glyphs;
         run.public->cluster = final_cluster;
+    } else {
+        free(run.public->glyphs);
+        free(run.public->cluster);
+
+        run.public->glyphs = NULL;
+        run.public->cluster = NULL;
     }
 
     LOG_DBG("glyph count: %zu", run.public->count);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fcft-3.3.1/meson.build new/fcft-3.3.2/meson.build
--- old/fcft-3.3.1/meson.build  2025-03-13 13:17:15.000000000 +0100
+++ new/fcft-3.3.2/meson.build  2025-07-16 11:40:37.000000000 +0200
@@ -1,5 +1,5 @@
 project('fcft', 'c',
-        version: '3.3.1',  # Don't forget to update version in man pages
+        version: '3.3.2',  # Don't forget to update version in man pages
         license: 'MIT',
         meson_version: '>=0.58.0',
         default_options: [
@@ -20,7 +20,7 @@
 so_version = [
   '4',      # MAJOR: increment on non-backward compatible ABI changes
   '3',      # MINOR: increment with backward compatible ABI changes
-  '1',      # PATCH: increment with non-ABI affecting changes
+  '2',      # PATCH: increment with non-ABI affecting changes
 ]
 
 is_debug_build = get_option('buildtype').startswith('debug')

Reply via email to