Try to work around segfaults on Solaris if NULL is passed for outbuf...

Wed Mar 20 18:20:21 2002  Owen Taylor  <otaylor@redhat.com>

        * 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)
This commit is contained in:
Owen Taylor 2002-03-20 23:24:22 +00:00 committed by Owen Taylor
parent eccf6b573b
commit 8125388daa
8 changed files with 51 additions and 1 deletions

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -1,3 +1,9 @@
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* 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 <otaylor@redhat.com>
* glib/gfileutils.c (get_contents_regfile): Close the

View File

@ -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++;