Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 17 Dec 1998 11:18:37 +0000 (11:18 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 17 Dec 1998 11:18:37 +0000 (11:18 +0000)
* iconv/gconv_db.c (gen_steps): Respect error return value from
init functions and abort.

ChangeLog
iconv/gconv_db.c

index 26ee9bd..bf27373 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 1998-12-17  Ulrich Drepper  <drepper@cygnus.com>
 
+       * iconv/gconv_db.c (gen_steps): Respect error return value from
+       init functions and abort.
+
        * iconvdata/iso646.c: Recognize NF_Z_62-010_1973 as charset name.
 
 1998-12-17  H.J. Lu  <hjl@gnu.org>
index be2b7fa..f5a67ff 100644 (file)
@@ -181,6 +181,7 @@ gen_steps (struct derivation_step *best, const char *toset,
     {
       int failed = 0;
 
+      status = GCONV_OK;
       *nsteps = step_cnt;
       current = best;
       while (step_cnt-- > 0)
@@ -220,7 +221,18 @@ gen_steps (struct derivation_step *best, const char *toset,
 
          /* Call the init function.  */
          if (result[step_cnt].init_fct != NULL)
-           _CALL_DL_FCT (result[step_cnt].init_fct, (&result[step_cnt]));
+            {
+              status = _CALL_DL_FCT (result[step_cnt].init_fct,
+                                     (&result[step_cnt]));
+              
+              if (status != GCONV_OK)
+                {
+                  failed = 1;
+                  /* Make sure we unload this modules.  */
+                  --step_cnt;
+                  break;
+                }
+            }
 
          current = current->last;
        }
@@ -239,13 +251,11 @@ gen_steps (struct derivation_step *best, const char *toset,
          free (result);
          *nsteps = 0;
          *handle = NULL;
-         status = GCONV_NOCONV;
+         if (status == GCONV_OK)
+           status = GCONV_NOCONV;
        }
       else
-       {
-         *handle = result;
-         status = GCONV_OK;
-       }
+       *handle = result;
     }
   else
     {