still trying to figure out iconv() returning -1, errno EILSEQ
This commit is contained in:
parent
7f9f13e382
commit
ab720a7a74
18
serialize.cc
18
serialize.cc
@ -3,6 +3,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <iconv.h>
|
#include <iconv.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
refptr< vector<unichar_t> > deserialize(const char * encoding, istream & in)
|
refptr< vector<unichar_t> > deserialize(const char * encoding, istream & in)
|
||||||
@ -45,7 +46,24 @@ refptr< vector<unichar_t> > deserialize(const char * encoding, istream & in)
|
|||||||
&outbuf_ptr, &outbytesleft);
|
&outbuf_ptr, &outbytesleft);
|
||||||
if (chars_converted == (size_t) -1)
|
if (chars_converted == (size_t) -1)
|
||||||
{
|
{
|
||||||
|
int err = errno;
|
||||||
perror("iconv() error");
|
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 << "chars_converted: " << chars_converted << endl;
|
||||||
cout << "after inbytesleft: " << inbytesleft << ", outbytesleft: " << outbytesleft << endl;
|
cout << "after inbytesleft: " << inbytesleft << ", outbytesleft: " << outbytesleft << endl;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user