diff options
author | Volker Lendecke <vl@samba.org> | 2011-03-29 18:22:18 +0200 |
---|---|---|
committer | Volker Lendecke <vlendec@samba.org> | 2011-03-29 19:17:41 +0200 |
commit | 1e50f9a5c263ed19ef8e9c689c96f1e51194f405 (patch) | |
tree | c570cbc6f0bf594709b36ca006ed0f65905d7905 | |
parent | 52ff0dde37d2333b21f4e81e2c125c45a88a2eea (diff) | |
download | samba-1e50f9a5c263ed19ef8e9c689c96f1e51194f405.tar.gz samba-1e50f9a5c263ed19ef8e9c689c96f1e51194f405.tar.bz2 samba-1e50f9a5c263ed19ef8e9c689c96f1e51194f405.zip |
charconv: Fix the slow-path character conversions
This reverts a part of 0189087e257f. That one might have fixed the fast path,
but it broke the slow path. convert_string_internal returns 0/-1 despite the
size_t result type and the misleading comment. If you follow the path to
smb_iconv and for example iconv_copy(), you will see that this routine returns
0 even after it copied something.
How to check: Use German locale, and do an smbclient "allinfo" on a file
modified in march (März in German). Notice the "ä". Before 0189087 this printed
correctly, after 0189087 it cut off the fields after the M for März.
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Tue Mar 29 19:17:41 CEST 2011 on sn-devel-104
-rw-r--r-- | source3/lib/charcnv.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/source3/lib/charcnv.c b/source3/lib/charcnv.c index f95442a49f..77e359d362 100644 --- a/source3/lib/charcnv.c +++ b/source3/lib/charcnv.c @@ -187,7 +187,7 @@ size_t convert_string_error(charset_t from, charset_t to, #else size_t ret = convert_string_internal(from, to, p, slen, q, dlen, converted_size); if (converted_size) { - *converted_size = ret + retval; + *converted_size += retval; } return ret; #endif @@ -231,7 +231,7 @@ size_t convert_string_error(charset_t from, charset_t to, #else size_t ret = convert_string_internal(from, to, p, slen, q, dlen, converted_size); if (converted_size) { - *converted_size = ret + retval; + *converted_size += retval; } return ret; #endif @@ -275,7 +275,7 @@ size_t convert_string_error(charset_t from, charset_t to, #else size_t ret = convert_string_internal(from, to, p, slen, q, dlen, converted_size); if (converted_size) { - *converted_size = ret + retval; + *converted_size += retval; } return ret; #endif |