Patch 8.2.0334

8 views
Skip to first unread message

Bram Moolenaar

unread,
Feb 29, 2020, 11:38:46 AM2/29/20
to vim...@googlegroups.com

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 -- Br...@Moolenaar.net -- 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 ///
Reply all
Reply to author
Forward
0 new messages