<div dir="ltr"><div>Hi Bil,</div><div><br></div><div>I think I found a bug:</div><div>When creating an object with <br></div><div><br></div><div>  s7_pointer obj = s7_make_c_object(sc, type_foo, new Foo{});<br>  s7_pointer methods = s7_eval_c_string(<br>      sc, &quot;(inlet :write foo-write))&quot;);<br>  // Without gc_protect the c_object loses its methods after gc<br>  if(arg_gc_protect == 1) s7_gc_protect(sc, methods);<br>  s7_c_object_set_let(sc, obj, methods);<br>  return s7_openlet(sc, obj);</div><div><br></div><div>(as the comment says) without gc_protect of the c_object let/methods, the c_object loses its methods after gc.</div><div>I&#39;d assume that since we &quot;set_let&quot; to a value that still is &quot;alive&quot;, it&#39;s &quot;let/methods objects&quot; would also not be garbage collected (at least I assume that the let is getting gc&#39;ed).</div><div><br></div><div>I&#39;m attaching a demo program</div><div>- ./main 0 # no gc_protect, errors</div><div>- ./main 1 # gc_protect, no errors<br></div></div>