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); +