Mercurial > vim
changeset 9605:846d4bad2df7 v7.4.2080
commit https://github.com/vim/vim/commit/b869c0da31716ff14bbfd63346d140d0a1d68af7
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 20 00:10:51 2016 +0200
patch 7.4.2080
Problem: When using PERROR() on some systems assert_fails() does not see
the error.
Solution: Make PERROR() always report the error.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 20 Jul 2016 00:15:06 +0200 |
parents | a16f2505a6b3 |
children | 19d4f5a47ae6 |
files | src/message.c src/proto/message.pro src/version.c src/vim.h |
diffstat | 4 files changed, 19 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/message.c +++ b/src/message.c @@ -521,6 +521,21 @@ emsg_not_now(void) return FALSE; } +#if !defined(HAVE_STRERROR) || defined(PROTO) +/* + * Replacement for perror() that behaves more or less like emsg() was called. + * v:errmsg will be set and called_emsg will be set. + */ + void +do_perror(char *msg) +{ + perror(msg); + ++emsg_silent; + emsg((char_u *)msg); + --emsg_silent; +} +#endif + /* * emsg() - display an error message *
--- a/src/proto/message.pro +++ b/src/proto/message.pro @@ -8,6 +8,7 @@ void trunc_string(char_u *s, char_u *buf void reset_last_sourcing(void); void msg_source(int attr); int emsg_not_now(void); +void do_perror(char *msg); int emsg(char_u *s); int emsg2(char_u *s, char_u *a1); void emsg_invreg(int name);
--- a/src/version.c +++ b/src/version.c @@ -759,6 +759,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2080, +/**/ 2079, /**/ 2078,
--- a/src/vim.h +++ b/src/vim.h @@ -1652,7 +1652,7 @@ typedef UINT32_TYPEDEF UINT32_T; #ifdef HAVE_STRERROR # define PERROR(msg) (void)emsg3((char_u *)"%s: %s", (char_u *)msg, (char_u *)strerror(errno)) #else -# define PERROR(msg) perror(msg) +# define PERROR(msg) do_perror(msg) #endif typedef long linenr_T; /* line number type */