diff options
-rw-r--r-- | src/input/mms.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/input/mms.c b/src/input/mms.c index e7a27e2a1..b037cf1e7 100644 --- a/src/input/mms.c +++ b/src/input/mms.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: mms.c,v 1.32 2003/10/11 20:42:38 tmattern Exp $ + * $Id: mms.c,v 1.33 2003/10/12 14:28:37 komadori Exp $ * * MMS over TCP protocol * based on work from major mms @@ -269,18 +269,32 @@ static iconv_t string_utf16_open() { } static void string_utf16_close(iconv_t url_conv) { - iconv_close(url_conv); + if (url_conv != (iconv_t)-1) { + iconv_close(url_conv); + } } static void string_utf16(iconv_t url_conv, char *dest, char *src, int len) { - size_t len1, len2; - char *ip, *op; - memset(dest, 0, 1000); - len1 = len; len2 = 1000; - ip = src; op = dest; - iconv(url_conv, &ip, &len1, &op, &len2); + if (url_conv == (iconv_t)-1) { + int i; + + for (i = 0; i < len; i++) { + dest[i * 2] = src[i]; + dest[i * 2 + 1] = 0; + } + dest[i * 2] = 0; + dest[i * 2 + 1] = 0; + } + else { + size_t len1, len2; + char *ip, *op; + + len1 = len; len2 = 1000; + ip = src; op = dest; + iconv(url_conv, &ip, &len1, &op, &len2); + } } #else |