char **outbuf, size_t *outbytesleft)
{
/* in many cases we can go direct */
- if (cd->direct) {
+ if (likely(cd->direct)) {
return cd->direct(cd->cd_direct,
inbuf, inbytesleft, outbuf, outbytesleft);
}
#ifndef SMB_ICONV_BUFSIZE
#define SMB_ICONV_BUFSIZE 2048
#endif
- TALLOC_CTX *mem_ctx;
+ char cvtbuf[SMB_ICONV_BUFSIZE];
size_t bufsize;
- char *cvtbuf;
-
-#if _SAMBA_BUILD_ == 3
- mem_ctx = talloc_tos();
-#else
- mem_ctx = cd;
-#endif
- cvtbuf = talloc_array(mem_ctx, char, SMB_ICONV_BUFSIZE);
-
- if (!cvtbuf) {
- return (size_t)-1;
- }
while (*inbytesleft > 0) {
char *bufp1 = cvtbuf;
if (cd->push(cd->cd_push,
&bufp2, &bufsize,
outbuf, outbytesleft) == -1) {
- talloc_free(cvtbuf);
return -1;
} else if (pull_failed) {
/* We want the pull errno if possible */
return -1;
}
}
- talloc_free(cvtbuf);
}
return 0;