diff --git a/ChangeLog b/ChangeLog
index b542cb33aa82f3f7309d8e59d536e5ff32c5ab8a..5146bbb4455f6de0db7e25ba948b4d7ae57d8060 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-10-19  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+
+ * Fix a segfault in link parsing caused by malformed dictionary texts.
+
+
 2008-10-18  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * Use a SexyIconEntry for the search field, it's just sexy :).
diff --git a/lib/dictd.c b/lib/dictd.c
index 7e7fb13477c4ac12e3fe82574c309880f1c8086e..f0bb93dc59c3c99017247aa36c616b2192e80419 100644
--- a/lib/dictd.c
+++ b/lib/dictd.c
@@ -151,6 +151,13 @@ static void parse_line(DictData *dd, GString *buffer)
 		g_string_erase(buffer, 0, len); /* remove already added text */
 
 		end = strchr(buffer->str, '}');
+		if (start > end)
+		{
+			/* braces don't match, skip this part, e.g. 'fd-deu-eng' returns
+			 * '    frozen}; to be cold; to freeze {froze' */
+			gtk_text_buffer_insert(dd->main_textbuffer, &dd->textiter, "{", 1);
+			continue;
+		}
 		len = end - buffer->str; /* length of the link */
 		found_link = g_strndup(buffer->str, len);