Hi! "Andy Wingo" <wi...@pobox.com> writes:
> fix a couple leaks in ports.c. thanks valgrind! > > * libguile/ports.c (scm_i_remove_port): Fix a case in which ports > explictly closed via close-port would leak their iconv_t data. > (scm_set_port_encoding_x): scm_i_set_port_encoding_x strdups its > argument, so we need to free the locale encoding of the incoming str. Good catch! > --- a/libguile/ports.c > +++ b/libguile/ports.c > @@ -661,6 +661,19 @@ scm_i_remove_port (SCM port) > scm_port_non_buffer (p); > p->putback_buf = NULL; > p->putback_buf_size = 0; > + > + if (p->input_cd != (iconv_t) -1) > + { > + iconv_close (p->input_cd); > + p->input_cd = (iconv_t) -1; > + } > + > + if (p->output_cd != (iconv_t) -1) > + { > + iconv_close (p->output_cd); > + p->output_cd = (iconv_t) -1; > + } > + I don’t think this is needed: each port has a finalizer, ‘finalize_port’, which normally takes care of this, eventually. Thanks, Ludo’.