* Handle invalid regex (like ?) semi-gracefully
authorVolodymyr Poltavets <Volodymyr.Poltavets@feig.de>
Tue, 15 Jun 2021 11:03:24 +0000 (13:03 +0200)
committerVolodymyr Poltavets <Volodymyr.Poltavets@feig.de>
Tue, 15 Jun 2021 11:03:24 +0000 (13:03 +0200)
jiten-pai.py

index d91970763fc29c56072b6a16d601c3e81a6ad338..fa3a7da18014dd4f45e2cc745b98b6189d21c264 100755 (executable)
@@ -432,6 +432,12 @@ class jpMainWindow(QMainWindow):
         # perform lookup
         QApplication.processEvents()
         result = dict_lookup(cfg['dict'], term, mode, max_res)
+        #
+        self.result_group.setTitle('Search results: %d' % len(result))
+        self.result_pane.setEnabled(True);
+        # bail early on empty result
+        if 0 == len(result):
+            return
         # format result
         term = self.search_box.lineEdit().text()
         re_term = re.compile(kata2hira(term), re.IGNORECASE)
@@ -456,8 +462,6 @@ class jpMainWindow(QMainWindow):
             html.append(' %s<br>\n' % res[2])
         html.append('</div>')
         self.result_pane.setHtml(''.join(html))
-        self.result_group.setTitle('Search results: %d' % len(result))
-        self.result_pane.setEnabled(True);
 
     def kbd_copy(self):
         self.clipboard.setText(self.result_pane.textCursor().selectedText())
@@ -478,7 +482,10 @@ def dict_lookup(dict_fname, pattern, mode, max_res=0):
     result = []
     cnt = 0;
     with open(dict_fname) as dict_file:
-        re_pattern = re.compile(pattern, re.IGNORECASE)
+        try:
+            re_pattern = re.compile(pattern, re.IGNORECASE)
+        except:
+            return result
         for line in dict_file:
             if max_res and cnt >= max_res:
                 break