1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

r2169: switch core iconv code to use talloc

This commit is contained in:
Andrew Tridgell 2004-09-01 09:45:00 +00:00 committed by Gerald (Jerry) Carter
parent 604fc603da
commit 117796c19b

View File

@ -179,15 +179,16 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
from = charsets;
to = charsets;
ret = (smb_iconv_t)malloc(sizeof(*ret));
ret = (smb_iconv_t)talloc_named(NULL, sizeof(*ret),
"iconv(%s,%s)", tocode, fromcode);
if (!ret) {
errno = ENOMEM;
return (smb_iconv_t)-1;
}
memset(ret, 0, sizeof(*ret));
ret->from_name = strdup(fromcode);
ret->to_name = strdup(tocode);
ret->from_name = talloc_strdup(ret, fromcode);
ret->to_name = talloc_strdup(ret, tocode);
/* check for the simplest null conversion */
if (strcmp(fromcode, tocode) == 0) {
@ -258,7 +259,7 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
return ret;
failed:
SAFE_FREE(ret);
talloc_free(ret);
errno = EINVAL;
return (smb_iconv_t)-1;
}
@ -266,7 +267,7 @@ failed:
/*
simple iconv_close() wrapper
*/
int smb_iconv_close (smb_iconv_t cd)
int smb_iconv_close(smb_iconv_t cd)
{
#ifdef HAVE_NATIVE_ICONV
if (cd->cd_direct) iconv_close((iconv_t)cd->cd_direct);
@ -274,11 +275,7 @@ int smb_iconv_close (smb_iconv_t cd)
if (cd->cd_push) iconv_close((iconv_t)cd->cd_push);
#endif
SAFE_FREE(cd->from_name);
SAFE_FREE(cd->to_name);
memset(cd, 0, sizeof(*cd));
SAFE_FREE(cd);
talloc_free(cd);
return 0;
}
@ -699,3 +696,5 @@ error:
return -1;
}