fix: use const va_list *cvlp and copy (fix from ircu2.10.09)

This commit is contained in:
2024-10-14 21:45:28 -04:00
parent 51650c0d78
commit 428acb5319

42
common/send.c Normal file → Executable file
View File

@@ -168,14 +168,11 @@ void sendto_one(aClient *to, char *pattern, ...)
{
va_list vl;
va_start(vl, pattern);
vsendto_one(to, pattern, vl);
vsendto_one(to, pattern, &vl);
va_end(vl);
}
void vsendto_one(to, pattern, vl)
aClient *to;
char *pattern;
va_list vl;
void vsendto_one(aClient *to, char *pattern, const va_list *cvlp)
{
#else
void sendto_one(to, pattern, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)
@@ -185,6 +182,8 @@ char *pattern, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10, *p11;
#endif
#ifdef USE_VARARGS
va_list vl;
va_copy(vl, *cvlp);
(void)vsprintf(sendbuf, pattern, vl);
#else
(void)sprintf(sendbuf, pattern, p1, p2, p3, p4, p5, p6,
@@ -308,7 +307,7 @@ void sendto_channel_butone(aClient *one, aClient *from, aChannel *chptr, char *p
if (MyConnect(acptr) && IsRegisteredUser(acptr))
{
# ifdef USE_VARARGS
vsendto_prefix_one(acptr, from, pattern, vl);
vsendto_prefix_one(acptr, from, pattern, &vl);
# else
sendto_prefix_one(acptr, from, pattern, p1, p2,
p3, p4, p5, p6, p7, p8);
@@ -322,7 +321,7 @@ void sendto_channel_butone(aClient *one, aClient *from, aChannel *chptr, char *p
if (sentalong[i] == 0)
{
# ifdef USE_VARARGS
vsendto_prefix_one(acptr, from, pattern, vl);
vsendto_prefix_one(acptr, from, pattern, &vl);
# else
sendto_prefix_one(acptr, from, pattern,
p1, p2, p3, p4,
@@ -408,7 +407,7 @@ void sendto_common_channels(aClient *user, char *pattern, ...)
IsMember(cptr, lp->value.chptr))
{
# ifdef USE_VARARGS
vsendto_prefix_one(cptr, user, pattern, vl);
vsendto_prefix_one(cptr, user, pattern, &vl);
# else
sendto_prefix_one(cptr, user, pattern,
p1, p2, p3, p4,
@@ -419,7 +418,7 @@ void sendto_common_channels(aClient *user, char *pattern, ...)
}
if (MyConnect(user))
# ifdef USE_VARARGS
vsendto_prefix_one(user, user, pattern, vl);
vsendto_prefix_one(user, user, pattern, &vl);
va_end(vl);
# else
sendto_prefix_one(user, user, pattern, p1, p2, p3, p4,
@@ -456,7 +455,7 @@ void sendto_channel_butserv(aChannel *chptr, aClient *from, char *pattern, ...)
for (lp = chptr->members; lp; lp = lp->next)
if (MyConnect(acptr = lp->value.cptr) &&
!(lp->flags & CHFL_ZOMBIE))
vsendto_prefix_one(acptr, from, pattern, vl);
vsendto_prefix_one(acptr, from, pattern, &vl);
va_end(vl);
#else
for (lp = chptr->members; lp; lp = lp->next)
@@ -593,7 +592,7 @@ void sendto_match_butone(aClient *one, aClient *from, char *mask, int what, char
match_it(cptr, mask, what)))
continue;
#ifdef USE_VARARGS
vsendto_prefix_one(cptr, from, pattern, vl);
vsendto_prefix_one(cptr, from, pattern, &vl);
}
va_end(vl);
#else
@@ -628,7 +627,7 @@ void sendto_all_butone(aClient *one, aClient *from, char *pattern, ...)
va_start(vl, pattern);
for (i = 0; i <= highest_fd; i++)
if ((cptr = local[i]) && !IsMe(cptr) && one != cptr)
vsendto_prefix_one(cptr, from, pattern, vl);
vsendto_prefix_one(cptr, from, pattern, &vl);
va_end(vl);
#else
for (i = 0; i <= highest_fd; i++)
@@ -716,7 +715,7 @@ void sendto_ops(char *pattern, ...)
strcat(fmt_target, " :*** Notice -- ");
strcat(fmt_target, pattern);
#ifdef USE_VARARGS
vsendto_one(cptr, fmt, vl);
vsendto_one(cptr, fmt, &vl);
#else
sendto_one(cptr, fmt, p1, p2, p3, p4, p5, p6, p7);
#endif
@@ -729,7 +728,7 @@ void sendto_ops(char *pattern, ...)
strcat(fmt, " :*** Notice -- ");
strcat(fmt, pattern);
# ifdef USE_VARARGS
vsendto_one(cptr, fmt, vl);
vsendto_one(cptr, fmt, &vl);
# else
sendto_one(cptr, fmt, cptr->name, p1, p2, p3, p4, p5, p6, p7);
# endif
@@ -778,7 +777,7 @@ void sendto_ops_butone(aClient *one, aClient *from, char *pattern, ...)
continue; /* ...was the one I should skip */
sentalong[i] = 1;
# ifdef USE_VARARGS
vsendto_prefix_one(cptr->from, from, pattern, vl);
vsendto_prefix_one(cptr->from, from, pattern, &vl);
}
va_end(vl);
# else
@@ -801,15 +800,12 @@ void sendto_prefix_one(aClient *to, aClient *from, char *pattern, ...)
{
va_list vl;
va_start(vl, pattern);
vsendto_prefix_one(to, from, pattern, vl);
vsendto_prefix_one(to, from, pattern, &vl);
va_end(vl);
}
void vsendto_prefix_one(to, from, pattern, vl)
Reg1 aClient *to;
Reg2 aClient *from;
char *pattern;
va_list vl;
void vsendto_prefix_one(register aClient *to, register aClient *from,
char *pattern, const va_list *cvlp)
{
#else
void sendto_prefix_one(to, from, pattern, p1, p2, p3, p4, p5, p6, p7, p8)
@@ -824,6 +820,8 @@ char *pattern, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8;
int flag = 0;
#ifdef USE_VARARGS
va_list vl;
va_copy(vl, *cvlp);
par = va_arg(vl, char *);
#else
par = p1;
@@ -905,7 +903,7 @@ void sendto_realops(char *pattern, ...)
strcat(fmt_target, " :*** Notice -- ");
strcat(fmt_target, pattern);
#ifdef USE_VARARGS
vsendto_one(cptr, fmt, vl);
vsendto_one(cptr, fmt, &vl);
#else
sendto_one(cptr, fmt, p1, p2, p3, p4, p5, p6, p7);
#endif