PERFORCE change 167079 for review
Xin LI
delphij at FreeBSD.org
Fri Aug 7 00:28:49 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=167079
Change 167079 by delphij at charlie on 2009/08/07 00:27:50
iconv(3) would mangle the pointer every time, so reset them at the beginning
of loop.
Affected files ...
.. //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/gen-rev.c#2 edit
Differences ...
==== //depot/projects/soc2009/gabor_iconv/extracted/tools/test/iconv/gen-rev.c#2 (text+ko) ====
@@ -64,17 +64,19 @@
iconv_t cd;
uint8_t outbuf[4];
uint32_t inbuf;
- size_t inbytes = 4, outbytesleft, ret;
- char *outbuf_ = (char *)outbuf;
- const char *inbuf_ = (const char *)inbuf;
+ size_t inbytesleft, outbytesleft, ret;
+ char *outbuf_;
+ const char *inbuf_;
if ((cd = iconv_open(argv[1], "UCS-4-INTERNAL")) == (iconv_t)-1)
err(1, NULL);
for (inbuf = 0;; inbuf += 1) {
- outbytesleft = 4;
+ inbytesleft = outbytesleft = 4;
+ outbuf_ = (char*) outbuf;
+ inbuf_ = (const char *)&inbuf;
iconv(cd,NULL,NULL,NULL,NULL);
- ret = iconv(cd, &inbuf_, &inbytes, &outbuf_, &outbytesleft);
+ ret = iconv(cd, &inbuf_, &inbytesleft, &outbuf_, &outbytesleft);
if (ret == (size_t)-1) {
switch(errno) {
case EILSEQ:
@@ -83,9 +85,9 @@
continue;
}
}
- format(inbuf_, 4);
+ format((const char*)&inbuf, 4);
printf(" = ");
- format(outbuf_, outbytesleft);
+ format((const char*)outbuf, 4 - outbytesleft);
printf("\n");
}
More information about the p4-projects
mailing list