浏览代码

dselect: Use a function instead of a jump error handler

Guillem Jover 15 年之前
父节点
当前提交
051423d23c
共有 1 个文件被更改,包括 10 次插入7 次删除
  1. 10 7
      dselect/main.cc

+ 10 - 7
dselect/main.cc

@@ -498,18 +498,21 @@ urqresult urq_quit(void) {
   return urqr_quitmenu;
 }
 
-int main(int, const char *const *argv) {
-  jmp_buf ejbuf;
+static void
+dselect_catch_fatal_error()
+{
+  cursesoff();
+  catch_fatal_error();
+}
 
+int
+main(int, const char *const *argv)
+{
   setlocale(LC_ALL, "");
   bindtextdomain(DSELECT, LOCALEDIR);
   textdomain(DSELECT);
 
-  if (setjmp(ejbuf)) { /* expect warning about possible clobbering of argv */
-    cursesoff();
-    catch_fatal_error();
-  }
-  push_error_handler(&ejbuf, print_fatal_error, 0);
+  push_error_context_func(dselect_catch_fatal_error, print_fatal_error, 0);
 
   loadcfgfile(DSELECT, cmdinfos);
   myopt(&argv,cmdinfos);