about summary refs log tree commit diff
path: root/iconvdata/iso-2022-jp.c
diff options
context:
space:
mode:
Diffstat (limited to 'iconvdata/iso-2022-jp.c')
-rw-r--r--iconvdata/iso-2022-jp.c52
1 files changed, 28 insertions, 24 deletions
diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c
index e888d310b7..36465ccd45 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;