forked from aniani/vim
patch 8.1.0954: arguments of semsg() and siemsg() are not checked
Problem: Arguments of semsg() and siemsg() are not checked. Solution: Add function prototype with __attribute__.
This commit is contained in:
parent
c9629251a6
commit
0d8562a999
@ -730,6 +730,7 @@ emsg(char *s)
|
|||||||
return TRUE; /* no error messages at the moment */
|
return TRUE; /* no error messages at the moment */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef PROTO // manual proto with __attribute__
|
||||||
/*
|
/*
|
||||||
* Print an error message with format string and variable arguments.
|
* Print an error message with format string and variable arguments.
|
||||||
* Note: caller must not pass 'IObuff' as 1st argument.
|
* Note: caller must not pass 'IObuff' as 1st argument.
|
||||||
@ -749,6 +750,7 @@ semsg(const char *s, ...)
|
|||||||
}
|
}
|
||||||
return TRUE; /* no error messages at the moment */
|
return TRUE; /* no error messages at the moment */
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Same as emsg(...), but abort on error when ABORT_ON_INTERNAL_ERROR is
|
* Same as emsg(...), but abort on error when ABORT_ON_INTERNAL_ERROR is
|
||||||
@ -765,6 +767,7 @@ iemsg(char *s)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef PROTO // manual proto with __attribute__
|
||||||
/*
|
/*
|
||||||
* Same as semsg(...) but abort on error when ABORT_ON_INTERNAL_ERROR is
|
* 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
|
* defined. It is used for internal errors only, so that they can be
|
||||||
@ -787,6 +790,7 @@ siemsg(const char *s, ...)
|
|||||||
abort();
|
abort();
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Give an "Internal error" message.
|
* Give an "Internal error" message.
|
||||||
|
22
src/proto.h
22
src/proto.h
@ -134,6 +134,28 @@ smsg_attr_keep(int, const char *, ...)
|
|||||||
#endif
|
#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
|
int
|
||||||
# ifdef __BORLANDC__
|
# ifdef __BORLANDC__
|
||||||
_RTLENTRYF
|
_RTLENTRYF
|
||||||
|
@ -11,9 +11,7 @@ int emsg_not_now(void);
|
|||||||
void ignore_error_for_testing(char_u *error);
|
void ignore_error_for_testing(char_u *error);
|
||||||
void do_perror(char *msg);
|
void do_perror(char *msg);
|
||||||
int emsg(char *s);
|
int emsg(char *s);
|
||||||
int semsg(const char *s, ...);
|
|
||||||
void iemsg(char *s);
|
void iemsg(char *s);
|
||||||
void siemsg(const char *s, ...);
|
|
||||||
void internal_error(char *where);
|
void internal_error(char *where);
|
||||||
void emsg_invreg(int name);
|
void emsg_invreg(int name);
|
||||||
char *msg_trunc_attr(char *s, int force, int attr);
|
char *msg_trunc_attr(char *s, int force, int attr);
|
||||||
|
@ -779,6 +779,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
954,
|
||||||
/**/
|
/**/
|
||||||
953,
|
953,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user