Sven M. Hallberg on Mon, Mar 20 2023:
>       ** (process:72067): CRITICAL **: 01:07:35.544: eda_config_set_property: 
> assertion '!eda_config_is_descendent (parent, config)' failed
>       gaf(72067) in free(): bogus pointer (double free?) 0xdfdfdfdfdfdfdfdf
>       Abort trap (core dumped)
>       FAIL unit-tests/t0402-config.scm (exit status: 134)

Found it, patch below. On to the next one!
All the tests in gnetlist-legacy fail like this:

    
/usr/ports/pobj/geda-gaf-1.10.2/geda-gaf-1.10.2/gnetlist-legacy/src/gnetlist-legacy
 -g stack_1-geda  
/usr/ports/pobj/geda-gaf-1.10.2/geda-gaf-1.10.2/gnetlist-legacy/tests/stack_1-geda.sch
    Loading schematic 
[/usr/ports/pobj/geda-gaf-1.10.2/geda-gaf-1.10.2/gnetlist-legacy/tests/stack_1-geda.sch]
    ERROR: Failed to load 
'/usr/ports/pobj/geda-gaf-1.10.2/geda-gaf-1.10.2/gnetlist-legacy/tests/stack_1-geda.sch':
 Cannot find file 
/usr/ports/pobj/geda-gaf-1.10.2/geda-gaf-1.10.2/gnetlist-legacy/tests/stack_1-geda.sch:
 No such file or directory
    ...

Indeed, gnetlist-legacy/tests/stack_1-geda.sch does not exist; the file
is called stack_1.sch. No idea, what's going on here. Makefile.am says:

    input_files = \
        stack_1.sch \
        ...

    TESTS = stack_1-geda.out \
            ...

What gives?
-p

PS: I'm not subscribed to ports, so please Cc replies, thx. :)


Index: cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c
===================================================================
RCS file: cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c
diff -N cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ cad/geda-gaf/patches/patch-libgeda_src_scheme_config_c      20 Mar 2023 
12:32:59 -0000
@@ -0,0 +1,22 @@
+g_strfreev expects its argument to be a NULL-terminated array of pointers.
+
+Index: libgeda/src/scheme_config.c
+--- libgeda/src/scheme_config.c.orig
++++ libgeda/src/scheme_config.c
+@@ -961,7 +961,7 @@ SCM_DEFINE (set_config_x, "%set-config!", 4, 0, 0,
+     int i = 0;
+ 
+     if (scm_is_string (first_s)) {
+-      gchar **value = g_new0 (gchar *, len);
++      gchar **value = g_new0 (gchar *, len + 1);
+       scm_dynwind_unwind_handler ((void (*)(void *)) g_strfreev, value,
+                                   SCM_F_WIND_EXPLICITLY);
+       for (curr_s = value_s; !scm_is_null (curr_s); curr_s = scm_cdr 
(curr_s)) {
+@@ -969,6 +969,7 @@ SCM_DEFINE (set_config_x, "%set-config!", 4, 0, 0,
+         value [i++] = g_strdup (tmp);
+         free (tmp);
+       }
++      value [i] = NULL;                       /* null-terminate for 
g_strfreev */
+       eda_config_set_string_list (cfg, group, key,
+                                   (const gchar * const *) value, len);
+ 

Reply via email to