From 8125388daaab6a26c738fadddc42cfa56f834a53 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Wed, 20 Mar 2002 23:24:22 +0000 Subject: [PATCH] Try to work around segfaults on Solaris if NULL is passed for outbuf... Wed Mar 20 18:20:21 2002 Owen Taylor * glib/gconvert.c (open_converter): Try to work around segfaults on Solaris if NULL is passed for outbuf... supposedly gchar *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-12 | 6 ++++++ ChangeLog.pre-2-2 | 6 ++++++ ChangeLog.pre-2-4 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ glib/gconvert.c | 10 +++++++++- 8 files changed, 51 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 01307bc..7f32eb5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 01307bc..7f32eb5 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 01307bc..7f32eb5 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 01307bc..7f32eb5 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 01307bc..7f32eb5 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 01307bc..7f32eb5 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 01307bc..7f32eb5 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Wed Mar 20 18:20:21 2002 Owen Taylor + + * glib/gconvert.c (open_converter): Try to work around segfaults + on Solaris if NULL is passed for outbuf... supposedly gchar + *outbuf = NULL... &outbuf works. (#74336, Lauri Alanko) + Wed Mar 20 11:17:32 2002 Owen Taylor * glib/gfileutils.c (get_contents_regfile): Close the diff --git a/glib/gconvert.c b/glib/gconvert.c index c12569e..63c251f 100644 --- a/glib/gconvert.c +++ b/glib/gconvert.c @@ -354,11 +354,19 @@ open_converter (const gchar *to_codeset, } else { + /* Apparently iconv on Solaris <= 7 segfaults if you pass in + * NULL for anything but inbuf; work around that. (NULL outbuf + * or NULL *outbuf is allowed by Unix98.) + */ + gint inbytes_left = 0; + gchar *outbuf = NULL; + gint outbytes_left = 0; + cd = bucket->cd; bucket->used = TRUE; /* reset the descriptor */ - g_iconv (cd, NULL, NULL, NULL, NULL); + g_iconv (cd, NULL, &inbytes_left, &outbuf, &outbytes_left); } bucket->refcount++; -- 2.7.4