From: Bram Moolenaar Date: Tue, 19 Jul 2016 22:10:51 +0000 (+0200) Subject: patch 7.4.2080 X-Git-Tag: v7.4.2080 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b869c0da31716ff14bbfd63346d140d0a1d68af7;p=vim 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. --- diff --git a/src/message.c b/src/message.c index 7aec2d613..c49429d0e 100644 --- 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 * diff --git a/src/proto/message.pro b/src/proto/message.pro index 27a215de6..5b7064009 100644 --- a/src/proto/message.pro +++ b/src/proto/message.pro @@ -8,6 +8,7 @@ void trunc_string(char_u *s, char_u *buf, int room, int buflen); 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); diff --git a/src/version.c b/src/version.c index febea0a3d..742f78b29 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2080, /**/ 2079, /**/ diff --git a/src/vim.h b/src/vim.h index 488f27084..e2d4cc48f 100644 --- 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 */