Ulrich Drepper wrote:
>
> On Tue, 2002-07-16 at 10:41, Blair Zajac wrote:
>
> > #0 0x000318c4 in apr_xlate_conv_buffer (convset=0x0, inbuf=0xffbef380
> > "stringtest.tmp", inbytes_left=0xffbef0ac, outbuf=0x558f0 "twice as
> > long",
> > outbytes_left=0xffbef0a8) at xlate.c:308
> > 308 if (convset->ich != (iconv_t)-1) {
> > (gdb) bt
> > #0 0x000318c4 in apr_xlate_conv_buffer (convset=0x0, inbuf=0xffbef380
> > "stringtest.tmp", inbytes_left=0xffbef0ac, outbuf=0x558f0 "twice as
> > long",
> > outbytes_left=0xffbef0a8) at xlate.c:308
> > #1 0x0002116c in convert_to_stringbuf (convset=0x0, src_data=0xffbef380
> > "stringtest.tmp", src_length=14, dest=0xffbef134, pool=0x55708)
> > at subversion/libsvn_subr/utf.c:164
> > #2 0x0002161c in svn_utf_cstring_from_utf8 (dest=0xffbef1b4, src=0xffbef380
> > "stringtest.tmp", pool=0x55708) at subversion/libsvn_subr/utf.c:375
>
> I don't have access to the sources so take this with a grain of salt.
>
> It looks as if the function svn_utf_cstring_from_utf8 calls to get a
> iconv descriptor returns NULL as a sign that no such converstion is
> possible. iconv_open normally signals this with (iconv_t)-1. So this
> can be a simple mismatch. The error might not be visible on other
> platforms because they actually do have a decent amount of converters
> available.
[cc'ing [EMAIL PROTECTED]
It looks like a problem with iconv_open on my Solaris 8 system where
iconv_open returns (iconv_t)-1, but errno is 0.
Here's a way to demonstrate this using Apr only. Apply the following
patch to apr and run
% test/testmd5 626 UTF-8
Amongst the other print out, I get
iconv_open failed: returned ffffffff errno is 0
Best,
Blair
--
Blair Zajac <[EMAIL PROTECTED]>
Web and OS performance plots - http://www.orcaware.com/orca/
Index: i18n/unix/xlate.c
===================================================================
RCS file: /home/cvspublic/apr/i18n/unix/xlate.c,v
retrieving revision 1.28
diff -u -r1.28 xlate.c
--- i18n/unix/xlate.c 15 Jul 2002 19:21:01 -0000 1.28
+++ i18n/unix/xlate.c 16 Jul 2002 22:46:53 -0000
@@ -52,6 +52,7 @@
* <http://www.apache.org/>.
*/
+#include <stdio.h>
#include "apr_private.h"
#include "apr_lib.h"
@@ -269,7 +270,9 @@
if (!found) {
new->ich = iconv_open(topage, frompage);
if (new->ich == (iconv_t)-1) {
- return errno;
+const int e = errno;
+fprintf(stderr, "iconv_open failed: returned %p errno is %d\n", new->ich, e);
+ return e;
}
found = 1;
check_sbcs(new);
Index: test/testmd5.c
===================================================================
RCS file: /home/cvspublic/apr/test/testmd5.c,v
retrieving revision 1.14
diff -u -r1.14 testmd5.c
--- test/testmd5.c 10 Jul 2002 06:01:13 -0000 1.14
+++ test/testmd5.c 16 Jul 2002 22:46:53 -0000
@@ -98,6 +98,7 @@
STD_TEST_NEQ(" apr_md5_init", apr_md5_init(&context))
if (xlate) {
+#define APR_HAS_XLATE 1
#if APR_HAS_XLATE
STD_TEST_NEQ(" apr_md5_set_xlate",
apr_md5_set_xlate(&context, xlate))