Question on lp_load() and smb_iconv_open()

Jelmer Vernooij jelmer at samba.org
Thu May 1 11:42:24 GMT 2008


On Thu, 2008-05-01 at 15:03 +0400, Alexander Bokovoy wrote:
> 2008/5/1, Brad Hards <bradh at frogmouth.net>:
> > source/param/loadparm.c, line 2477 (in lp_load()) calls smb_iconv_open() (in
> >  lib/charset/iconv.c). That ends up calling the system iconv_open().
> >
> >  There is a smb_iconv_close() function (which calls the system iconv_close())
> >  to clean up. However loadparm.c doesn't appear to call it. It doesn't even
> >  store the
> >
> >  I'm not sure how to fix this. The easiest way would appear to be some kind of
> >  lp_unload() that gets the smb_iconv_t back from the lib/util/dprintf.c static
> >  variable, and then calls smb_iconv_close().
> >
> >  Comments, suggestions, or patches most welcome...
> What about allocating it on some global context and set destructor to
> that structure to call smb_iconv_close()? This way it will be closed
> automatically when global context is destroyed.
This is the iconv handle used by DEBUG. Deallocating it could have
strange side-effects.. Ideally, lp_load() should not be touching any
global state. 

Generally, an application should only be calling lp_load() once and the
iconv context set then will live until the end of the process. Is there
a particular reason this variable is a problem atm?

Cheers,

Jelmer

-- 
Jelmer Vernooij <jelmer at samba.org> - http://samba.org/~jelmer/



More information about the samba-technical mailing list