From a2acb832ddc236e9d26ab577dbb3469a10598cd3 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 29 Mar 2010 20:12:25 -0400 Subject: [PATCH] updating and debugging deserialize() --- imbecile.cc | 6 ++++++ serialize.cc | 16 ++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/imbecile.cc b/imbecile.cc index 720f2a6..4473e7f 100644 --- a/imbecile.cc +++ b/imbecile.cc @@ -38,5 +38,11 @@ int main(int argc, char * argv[]) return 1; } + cout << "Size: " << ucs_str->size() << endl; + for (int i = 0; i < ucs_str->size(); i++) + { + cout << (*ucs_str)[i] << ": '" << (char) (*ucs_str)[i] << "'" << endl; + } + return 0; } diff --git a/serialize.cc b/serialize.cc index 25e24b5..4a01f96 100644 --- a/serialize.cc +++ b/serialize.cc @@ -11,7 +11,7 @@ refptr< vector > deserialize(const char * encoding, istream & in) char * inbuf_ptr = (char *) &inbuf[0]; unichar_t outbuf[buf_size]; char * outbuf_ptr; - size_t bytes_converted, inbytesleft = 0, outbytesleft; + size_t bytes_converted, inbytes = 0, outbytes; refptr< vector > ucs = new vector(); iconv_t cd = iconv_open(encoding, "UTF-32"); @@ -23,19 +23,19 @@ refptr< vector > deserialize(const char * encoding, istream & in) for (;;) { - in.read(&inbuf[0], sizeof(inbuf) - inbytesleft); + in.read(inbuf_ptr, sizeof(inbuf) - inbytes); num_read = in.gcount(); if (num_read <= 0) break; outbuf_ptr = (char *) &outbuf[0]; - outbytesleft = sizeof(outbuf); - bytes_converted = iconv(cd, &inbuf_ptr, &inbytesleft, - &outbuf_ptr, &outbytesleft); - if (inbytesleft > 0) + outbytes = sizeof(outbuf); + bytes_converted = iconv(cd, &inbuf_ptr, &inbytes, + &outbuf_ptr, &outbytes); + if (inbytes > 0) { - memmove(&inbuf[0], inbuf_ptr, inbytesleft); - inbuf_ptr = (char *) &inbuf[0]; + memmove(&inbuf[0], inbuf_ptr, inbytes); } + inbuf_ptr = ((char *) &inbuf[0]) + inbytes; for (int i = 0; i < (bytes_converted / sizeof(outbuf[0])); i++) { ucs->push_back(outbuf[i]);