Patch 8.1.0954
Problem: Arguments of semsg() and siemsg() are not checked.
Solution: Add function prototype with __attribute__.
Files: src/message.c, src/proto/message.pro, src/proto.h
*** ../vim-8.1.0953/src/message.c 2019-02-17 17:44:36.215875493 +0100
--- src/message.c 2019-02-19 21:28:21.094091607 +0100
***************
*** 730,735 ****
--- 730,736 ----
return TRUE; /* no error messages at the moment */
}
+ #ifndef PROTO // manual proto with __attribute__
/*
* Print an error message with format string and variable arguments.
* Note: caller must not pass 'IObuff' as 1st argument.
***************
*** 749,754 ****
--- 750,756 ----
}
return TRUE; /* no error messages at the moment */
}
+ #endif
/*
* Same as emsg(...), but abort on error when ABORT_ON_INTERNAL_ERROR is
***************
*** 765,770 ****
--- 767,773 ----
#endif
}
+ #ifndef PROTO // manual proto with __attribute__
/*
* Same as semsg(...) but abort on error when ABORT_ON_INTERNAL_ERROR is
* defined. It is used for internal errors only, so that they can be
***************
*** 783,792 ****
va_end(ap);
emsg_core(IObuff);
}
! #ifdef ABORT_ON_INTERNAL_ERROR
abort();
! #endif
}
/*
* Give an "Internal error" message.
--- 786,796 ----
va_end(ap);
emsg_core(IObuff);
}
! # ifdef ABORT_ON_INTERNAL_ERROR
abort();
! # endif
}
+ #endif
/*
* Give an "Internal error" message.
*** ../vim-8.1.0953/src/proto/message.pro 2019-01-19 17:43:03.425449092
+0100
--- src/proto/message.pro 2019-02-19 21:29:46.765501862 +0100
***************
*** 11,19 ****
void ignore_error_for_testing(char_u *error);
void do_perror(char *msg);
int emsg(char *s);
- int semsg(const char *s, ...);
void iemsg(char *s);
- void siemsg(const char *s, ...);
void internal_error(char *where);
void emsg_invreg(int name);
char *msg_trunc_attr(char *s, int force, int attr);
--- 11,17 ----
*** ../vim-8.1.0953/src/proto.h 2019-02-17 17:44:36.219875473 +0100
--- src/proto.h 2019-02-19 21:32:14.388486699 +0100
***************
*** 134,139 ****
--- 134,161 ----
#endif
;
+ /* These prototypes cannot be produced automatically. */
+ int
+ # ifdef __BORLANDC__
+ _RTLENTRYF
+ # endif
+ semsg(const char *, ...)
+ #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
+ __attribute__((format(printf, 1, 0)))
+ #endif
+ ;
+
+ /* These prototypes cannot be produced automatically. */
+ void
+ # ifdef __BORLANDC__
+ _RTLENTRYF
+ # endif
+ siemsg(const char *, ...)
+ #ifdef USE_PRINTF_FORMAT_ATTRIBUTE
+ __attribute__((format(printf, 1, 0)))
+ #endif
+ ;
+
int
# ifdef __BORLANDC__
_RTLENTRYF
*** ../vim-8.1.0953/src/version.c 2019-02-19 21:24:50.559543423 +0100
--- src/version.c 2019-02-19 21:33:16.472060095 +0100
***************
*** 781,782 ****
--- 781,784 ----
{ /* Add new patch number below this line */
+ /**/
+ 954,
/**/
--
No engineer can take a shower without wondering if some sort of Teflon coating
would make showering unnecessary.
(Scott Adams - The Dilbert principle)
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.