Patch 8.2.0334
Problem:    Abort called when using test_void(). (Dominique Pelle)
Solution:   Only give an error, don't abort.
Files:      src/message.c, src/proto/message.pro, src/evalfunc.c,
            src/eval.c, src/json.c, src/testdir/test_functions.vim


*** ../vim-8.2.0333/src/message.c       2020-02-22 14:26:39.240757862 +0100
--- src/message.c       2020-02-29 17:06:19.120469767 +0100
***************
*** 838,843 ****
--- 838,853 ----
      siemsg(_(e_intern2), where);
  }
  
+ /*
+  * Like internal_error() but do not call abort(), to avoid tests using
+  * test_unknown() and test_void() causing Vim to exit.
+  */
+     void
+ internal_error_no_abort(char *where)
+ {
+      semsg(_(e_intern2), where);
+ }
+ 
  // emsg3() and emsgn() are in misc2.c to avoid warnings for the prototypes.
  
      void
*** ../vim-8.2.0333/src/proto/message.pro       2020-01-26 15:52:33.023833239 
+0100
--- src/proto/message.pro       2020-02-29 17:06:20.812463889 +0100
***************
*** 12,17 ****
--- 12,18 ----
  int emsg(char *s);
  void iemsg(char *s);
  void internal_error(char *where);
+ void internal_error_no_abort(char *where);
  void emsg_invreg(int name);
  void emsg_namelen(char *msg, char_u *name, int len);
  char *msg_trunc_attr(char *s, int force, int attr);
*** ../vim-8.2.0333/src/evalfunc.c      2020-02-29 13:43:23.694780190 +0100
--- src/evalfunc.c      2020-02-29 17:05:21.880668666 +0100
***************
*** 1890,1899 ****
  #endif
        case VAR_UNKNOWN:
        case VAR_VOID:
!           // Let's not use internal_error() here, otherwise
!           // empty(test_unknown()) with ABORT_ON_INTERNAL_ERROR defined makes
!           // Vim abort.
!           semsg(_(e_intern2), "f_empty(UNKNOWN)");
            n = TRUE;
            break;
      }
--- 1890,1896 ----
  #endif
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error_no_abort("f_empty(UNKNOWN)");
            n = TRUE;
            break;
      }
***************
*** 8278,8287 ****
        case VAR_BLOB:    n = VAR_TYPE_BLOB; break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!            // Let's not use internal_error() here, otherwise
!            // empty(test_unknown()) with ABORT_ON_INTERNAL_ERROR defined
!            // makes Vim abort.
!            semsg(_(e_intern2), "f_type(UNKNOWN)");
             n = -1;
             break;
      }
--- 8275,8281 ----
        case VAR_BLOB:    n = VAR_TYPE_BLOB; break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!            internal_error_no_abort("f_type(UNKNOWN)");
             n = -1;
             break;
      }
*** ../vim-8.2.0333/src/eval.c  2020-02-22 14:26:39.244757847 +0100
--- src/eval.c  2020-02-29 17:32:53.807510396 +0100
***************
*** 5560,5566 ****
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error("tv_get_number(UNKNOWN)");
            break;
      }
      if (denote == NULL)               // useful for values that must be 
unsigned
--- 5560,5566 ----
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error_no_abort("tv_get_number(UNKNOWN)");
            break;
      }
      if (denote == NULL)               // useful for values that must be 
unsigned
***************
*** 5614,5620 ****
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error("tv_get_float(UNKNOWN)");
            break;
      }
      return 0;
--- 5614,5620 ----
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error_no_abort("tv_get_float(UNKNOWN)");
            break;
      }
      return 0;
***************
*** 5886,5892 ****
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error("copy_tv(UNKNOWN)");
            break;
      }
  }
--- 5886,5892 ----
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error_no_abort("copy_tv(UNKNOWN)");
            break;
      }
  }
***************
*** 5965,5971 ****
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error("item_copy(UNKNOWN)");
            ret = FAIL;
      }
      --recurse;
--- 5965,5971 ----
            break;
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error_no_abort("item_copy(UNKNOWN)");
            ret = FAIL;
      }
      --recurse;
*** ../vim-8.2.0333/src/json.c  2020-02-25 21:26:46.275580512 +0100
--- src/json.c  2020-02-29 17:08:39.495982377 +0100
***************
*** 352,358 ****
  #endif
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error("json_encode_item()");
            return FAIL;
      }
      return OK;
--- 352,358 ----
  #endif
        case VAR_UNKNOWN:
        case VAR_VOID:
!           internal_error_no_abort("json_encode_item()");
            return FAIL;
      }
      return OK;
*** ../vim-8.2.0333/src/testdir/test_functions.vim      2020-02-29 
13:43:23.694780190 +0100
--- src/testdir/test_functions.vim      2020-02-29 17:33:25.495408181 +0100
***************
*** 63,68 ****
--- 63,78 ----
    call assert_fails("call empty(test_unknown())", 'E685:')
  endfunc
  
+ func Test_test_void()
+   call assert_fails('echo 1 == test_void()', 'E685:')
+   if has('float')
+     call assert_fails('echo 1.0 == test_void()', 'E685:')
+   endif
+   call assert_fails('let x = json_encode(test_void())', 'E685:')
+   call assert_fails('let x = copy(test_void())', 'E685:')
+   call assert_fails('let x = copy([test_void()])', 'E685:')
+ endfunc
+ 
  func Test_len()
    call assert_equal(1, len(0))
    call assert_equal(2, len(12))
*** ../vim-8.2.0333/src/version.c       2020-02-29 16:09:11.984263511 +0100
--- src/version.c       2020-02-29 17:37:51.546542590 +0100
***************
*** 740,741 ****
--- 740,743 ----
  {   /* Add new patch number below this line */
+ /**/
+     334,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
137. You decide to stay in college for an additional year or two,
     just so you can have the free Internet access.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202002291638.01TGccGe003776%40masaka.moolenaar.net.

Raspunde prin e-mail lui