diff options
author | ZyX <kp-pav@yandex.ru> | 2017-12-16 14:27:41 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-12-16 14:27:41 +0300 |
commit | 7f3b9a4acc503709c89a501aaee304ff208bd995 (patch) | |
tree | 73e2d477fc8664ccaffad9dbc000132c7fa82857 /src/nvim/message.c | |
parent | 76ffe0c5aa51fe4fe14811e86867af2c711190a1 (diff) | |
parent | 7afd26a6d189d1ca798f93db8661bd656a37265f (diff) | |
download | rneovim-7f3b9a4acc503709c89a501aaee304ff208bd995.tar.gz rneovim-7f3b9a4acc503709c89a501aaee304ff208bd995.tar.bz2 rneovim-7f3b9a4acc503709c89a501aaee304ff208bd995.zip |
Merge branch 'master' into hide-container-impl
Diffstat (limited to 'src/nvim/message.c')
-rw-r--r-- | src/nvim/message.c | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/src/nvim/message.c b/src/nvim/message.c index 5c8f0655bf..1d9a4de9c0 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -583,19 +583,60 @@ void emsg_invreg(int name) /// Print an error message with unknown number of arguments bool emsgf(const char *const fmt, ...) { + bool ret; + + va_list ap; + va_start(ap, fmt); + ret = emsgfv(fmt, ap); + va_end(ap); + + return ret; +} + +/// Print an error message with unknown number of arguments +static bool emsgfv(const char *fmt, va_list ap) +{ static char errbuf[IOSIZE]; if (emsg_not_now()) { return true; } - va_list ap; - va_start(ap, fmt); vim_vsnprintf(errbuf, sizeof(errbuf), fmt, ap, NULL); - va_end(ap); return emsg((const char_u *)errbuf); } +/// Same as emsg(...), but abort on error when ABORT_ON_INTERNAL_ERROR is +/// defined. It is used for internal errors only, so that they can be +/// detected when fuzzing vim. +void iemsg(const char *s) +{ + msg((char_u *)s); +#ifdef ABORT_ON_INTERNAL_ERROR + abort(); +#endif +} + +/// Same as emsgf(...) but abort on error when ABORT_ON_INTERNAL_ERROR is +/// defined. It is used for internal errors only, so that they can be +/// detected when fuzzing vim. +void iemsgf(const char *s, ...) +{ + va_list ap; + va_start(ap, s); + (void)emsgfv(s, ap); + va_end(ap); +#ifdef ABORT_ON_INTERNAL_ERROR + abort(); +#endif +} + +/// Give an "Internal error" message. +void internal_error(char *where) +{ + IEMSG2(_(e_intern2), where); +} + static void msg_emsgf_event(void **argv) { char *s = argv[0]; |