summaryrefslogtreecommitdiff
path: root/source4/param/loadparm.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/param/loadparm.c')
-rw-r--r--source4/param/loadparm.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c
index 46bbceb862..2bee0fbd86 100644
--- a/source4/param/loadparm.c
+++ b/source4/param/loadparm.c
@@ -2692,8 +2692,8 @@ struct smb_iconv_convenience *lp_iconv_convenience(struct loadparm_context *lp_c
if (lp_ctx == NULL) {
static struct smb_iconv_convenience *fallback_ic = NULL;
if (fallback_ic == NULL)
- fallback_ic = smb_iconv_convenience_init(talloc_autofree_context(),
- "CP850", "UTF8", true);
+ fallback_ic = smb_iconv_convenience_reinit(talloc_autofree_context(),
+ "CP850", "UTF8", true, NULL);
return fallback_ic;
}
return lp_ctx->iconv_convenience;
@@ -2701,8 +2701,12 @@ struct smb_iconv_convenience *lp_iconv_convenience(struct loadparm_context *lp_c
_PUBLIC_ void reload_charcnv(struct loadparm_context *lp_ctx)
{
- talloc_unlink(lp_ctx, lp_ctx->iconv_convenience);
- global_iconv_convenience = lp_ctx->iconv_convenience = smb_iconv_convenience_init_lp(lp_ctx, lp_ctx);
+ struct smb_iconv_convenience *old_ic = lp_ctx->iconv_convenience;
+ if (old_ic == NULL) {
+ old_ic = global_iconv_convenience;
+ }
+ lp_ctx->iconv_convenience = smb_iconv_convenience_reinit_lp(lp_ctx, lp_ctx, old_ic);
+ global_iconv_convenience = lp_ctx->iconv_convenience;
}
void lp_smbcli_options(struct loadparm_context *lp_ctx,