--- misc/hyphen-2.7.1/hyphen.c	2010-12-01 01:47:22.000000000 +0100
+++ misc/build/hyphen-2.7.1/hyphen.c	2011-01-18 16:26:50.953125000 +0100
@@ -291,13 +291,10 @@
   /* read in character set info */
   if (k == 0) {
     for (i=0;i<MAX_NAME;i++) dict[k]->cset[i]= 0;
-    if (fgets(dict[k]->cset,  sizeof(dict[k]->cset),f) != NULL) {
-      for (i=0;i<MAX_NAME;i++)
-        if ((dict[k]->cset[i] == '\r') || (dict[k]->cset[i] == '\n'))
-          dict[k]->cset[i] = 0;
-    } else {
-      dict[k]->cset[0] = 0;
-    }
+    fgets(dict[k]->cset,  sizeof(dict[k]->cset),f);
+    for (i=0;i<MAX_NAME;i++)
+      if ((dict[k]->cset[i] == '\r') || (dict[k]->cset[i] == '\n'))
+        dict[k]->cset[i] = 0;
     dict[k]->utf8 = (strcmp(dict[k]->cset, "UTF-8") == 0);
   } else {
     strcpy(dict[k]->cset, dict[0]->cset);
