aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--iconv/skeleton.c2
-rw-r--r--iconvdata/iso-2022-jp.c52
-rw-r--r--iconvdata/iso646.c49
4 files changed, 59 insertions, 48 deletions
diff --git a/ChangeLog b/ChangeLog
index bf27373..e2ec7ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/iconv/skeleton.c b/iconv/skeleton.c
index b1e96eb..4ed16d6 100644
--- a/iconv/skeleton.c
+++ b/iconv/skeleton.c
@@ -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.
diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c
index e888d31..36465cc 100644
--- a/iconvdata/iso-2022-jp.c
+++ b/iconvdata/iso-2022-jp.c
@@ -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;
+ new_data->dir = dir;
+ new_data->var = var;
+ step->data = new_data;
+
+ 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;
+ }
+
+ /* Yes, this is a stateful encoding. */
+ step->stateful = 1;
+
+ result = GCONV_OK;
}
- 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;
- }
-
- /* Yes, this is a stateful encoding. */
- step->stateful = 1;
-
- result = GCONV_OK;
}
return result;
diff --git a/iconvdata/iso646.c b/iconvdata/iso646.c
index 1053c77..701a71d 100644
--- a/iconvdata/iso646.c
+++ b/iconvdata/iso646.c
@@ -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;