(find_derivation): Release lock before returning.
authordrepper <drepper>
Mon, 4 Jan 1999 12:32:03 +0000 (12:32 +0000)
committerdrepper <drepper>
Mon, 4 Jan 1999 12:32:03 +0000 (12:32 +0000)
(__gconv_find_transform): Likewise.

iconv/gconv_db.c

index 1191454..e6253b8 100644 (file)
@@ -294,7 +294,10 @@ find_derivation (const char *toset, const char *toset_expand,
   result = derivation_lookup (fromset_expand ?: fromset, toset_expand ?: toset,
                              handle, nsteps);
   if (result == GCONV_OK)
-    return result;
+    {
+      __libc_lock_unlock (lock);
+      return result;
+    }
 
   /* ### TODO
      For now we use a simple algorithm with quadratic runtime behaviour.
@@ -527,7 +530,10 @@ __gconv_find_transform (const char *toset, const char *fromset,
 
   /* If we don't have a module database return with an error.  */
   if (__gconv_modules_db == NULL)
-    return GCONV_NOCONV;
+    {
+      __libc_lock_unlock (lock);
+      return GCONV_NOCONV;
+    }
 
   /* See whether the names are aliases.  */
   if (__gconv_alias_db != NULL)