# HG changeset patch # User Christian Brabandt # Date 1468966506 -7200 # Node ID 846d4bad2df7c38edcd0663ef2ec87ec1dfcc3fb # Parent a16f2505a6b333c0d6462ec979a1fb41184ae685 commit https://github.com/vim/vim/commit/b869c0da31716ff14bbfd63346d140d0a1d68af7 Author: Bram Moolenaar 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. diff --git a/src/message.c b/src/message.c --- 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 --- 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); diff --git a/src/version.c b/src/version.c --- 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, diff --git a/src/vim.h b/src/vim.h --- 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 */