From ab720a7a7496c68cbe5311730932a9c2036b3215 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 30 Mar 2010 09:15:53 -0400 Subject: [PATCH] still trying to figure out iconv() returning -1, errno EILSEQ --- serialize.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/serialize.cc b/serialize.cc index de24a31..111d472 100644 --- a/serialize.cc +++ b/serialize.cc @@ -3,6 +3,7 @@ #include #include #include +#include using namespace std; refptr< vector > deserialize(const char * encoding, istream & in) @@ -45,7 +46,24 @@ refptr< vector > deserialize(const char * encoding, istream & in) &outbuf_ptr, &outbytesleft); if (chars_converted == (size_t) -1) { + int err = errno; perror("iconv() error"); + switch (err) + { + case EINVAL: + cerr << "EINVAL" << endl; + break; + case EILSEQ: + cerr << "EILSEQ" << endl; + printf("inbuf: %p, inbuf_ptr: %p\n", inbuf, inbuf_ptr); + for (int i = 0; i < 6; i++) + printf("%02x ", inbuf_ptr[i]); + cout << endl; + break; + case E2BIG: + cerr << "E2BIG" << endl; + break; + } } cout << "chars_converted: " << chars_converted << endl; cout << "after inbytesleft: " << inbytesleft << ", outbytesleft: " << outbytesleft << endl;