* iconvdata/iso646.c (gconv_init): Return correct error value if we
	run out of memory.
	* iconvdata/iso-2022-jp.c: Likewise.
This commit is contained in:
Ulrich Drepper 1998-12-17 12:10:58 +00:00
parent c7ec9d75a7
commit 0937645101
4 changed files with 58 additions and 47 deletions

View File

@ -1,5 +1,9 @@
1998-12-17 Ulrich Drepper <drepper@cygnus.com>
* iconvdata/iso646.c (gconv_init): Return correct error value if we
run out of memory.
* iconvdata/iso-2022-jp.c: Likewise.
* iconv/gconv_db.c (gen_steps): Respect error return value from
init functions and abort.

View File

@ -1,4 +1,4 @@
/* Skeleton for a converison module.
/* Skeleton for a conversion module.
Copyright (C) 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.

View File

@ -132,34 +132,38 @@ gconv_init (struct gconv_step *step)
}
result = GCONV_NOCONV;
if (dir != illegal_dir
&& ((new_data
= (struct iso2022jp_data *) malloc (sizeof (struct iso2022jp_data)))
!= NULL))
if (dir != illegal_dir)
{
new_data->dir = dir;
new_data->var = var;
step->data = new_data;
new_data
= (struct iso2022jp_data *) malloc (sizeof (struct iso2022jp_data));
if (dir == from_iso2022jp)
result = GCONV_NOMEM;
if (new_data != NULL)
{
step->min_needed_from = MIN_NEEDED_FROM;
step->max_needed_from = MAX_NEEDED_FROM;
step->min_needed_to = MIN_NEEDED_TO;
step->max_needed_to = MIN_NEEDED_TO;
}
else
{
step->min_needed_from = MIN_NEEDED_TO;
step->max_needed_from = MAX_NEEDED_TO;
step->min_needed_to = MIN_NEEDED_FROM;
step->max_needed_to = MIN_NEEDED_FROM + 2;
}
new_data->dir = dir;
new_data->var = var;
step->data = new_data;
/* Yes, this is a stateful encoding. */
step->stateful = 1;
if (dir == from_iso2022jp)
{
step->min_needed_from = MIN_NEEDED_FROM;
step->max_needed_from = MAX_NEEDED_FROM;
step->min_needed_to = MIN_NEEDED_TO;
step->max_needed_to = MIN_NEEDED_TO;
}
else
{
step->min_needed_from = MIN_NEEDED_TO;
step->max_needed_from = MAX_NEEDED_TO;
step->min_needed_to = MIN_NEEDED_FROM;
step->max_needed_to = MIN_NEEDED_FROM + 2;
}
result = GCONV_OK;
/* Yes, this is a stateful encoding. */
step->stateful = 1;
result = GCONV_OK;
}
}
return result;

View File

@ -106,7 +106,7 @@ static const char *names[] =
[HU] = "MSZ_7795.3//",
[CU] = "NC_NC00-10//",
[FR] = "NF_Z_62-010//",
[FR1] = "NF_Z_62-010_1973//", /* Note the we don't have the parenthesis
[FR1] = "NF_Z_62-010_1973//", /* Note that we don't have the parenthesis
in the name. */
[NO] = "NS_4551-1//",
[NO2] = "NS_4551-2//",
@ -145,33 +145,36 @@ gconv_init (struct gconv_step *step)
}
result = GCONV_NOCONV;
if (dir != illegal_dir
&& ((new_data
= (struct iso646_data *) malloc (sizeof (struct iso646_data)))
!= NULL))
if (dir != illegal_dir)
{
new_data->dir = dir;
new_data->var = var;
step->data = new_data;
new_data = (struct iso646_data *) malloc (sizeof (struct iso646_data));
if (var == from_iso646)
result = GCONV_NOMEM;
if (new_data != NULL)
{
step->min_needed_from = MIN_NEEDED_FROM;
step->max_needed_from = MIN_NEEDED_FROM;
step->min_needed_to = MIN_NEEDED_TO;
step->max_needed_to = MIN_NEEDED_TO;
}
else
{
step->min_needed_from = MIN_NEEDED_TO;
step->max_needed_from = MIN_NEEDED_TO;
step->min_needed_to = MIN_NEEDED_FROM;
step->max_needed_to = MIN_NEEDED_FROM;
}
new_data->dir = dir;
new_data->var = var;
step->data = new_data;
step->stateful = 0;
if (var == from_iso646)
{
step->min_needed_from = MIN_NEEDED_FROM;
step->max_needed_from = MIN_NEEDED_FROM;
step->min_needed_to = MIN_NEEDED_TO;
step->max_needed_to = MIN_NEEDED_TO;
}
else
{
step->min_needed_from = MIN_NEEDED_TO;
step->max_needed_from = MIN_NEEDED_TO;
step->min_needed_to = MIN_NEEDED_FROM;
step->max_needed_to = MIN_NEEDED_FROM;
}
result = GCONV_OK;
step->stateful = 0;
result = GCONV_OK;
}
}
return result;