From 9d479ca655aee6108e92c9d0e46dc4f8d898c89f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 25 Feb 2019 23:46:15 +0100 Subject: Store static reference to SCM version of vcomponent. --- guile_type_helpers.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'guile_type_helpers.c') diff --git a/guile_type_helpers.c b/guile_type_helpers.c index 74223bae..00c68b18 100644 --- a/guile_type_helpers.c +++ b/guile_type_helpers.c @@ -14,9 +14,12 @@ SCM scm_from_strbuf(strbuf* s) { SCM scm_from_vector(VECT(vcomponent)* vect, SCM element_type) { SCM l = SCM_EOL; for (size_t i = 0; i < vect->length; i++) { - l = scm_cons( - scm_make_foreign_object_1 (element_type, GET(VECT(vcomponent))(vect, i)), - l); + vcomponent* v = GET(VECT(vcomponent))(vect, i); + if (v->scm == NULL) { + v->scm = scm_make_foreign_object_1 (element_type, v); + scm_gc_protect_object(v->scm); + } + l = scm_cons(v->scm, l); } return scm_reverse(l); } -- cgit v1.2.3