The vDbgPrintEx[1] sends a message to the Windows kernel debugger, if "DBG_PRINT" is defined. The va_start and va_end macros[2] fetch function's optional arguments. They only move the list pointer around, so va_start after va_end is safe.
I don't see a problem with this and it sounds useful, so it's an ACK. [1] <http://msdn.microsoft.com/en-us/library/windows/hardware/ff556075%28v=vs.85%29.aspx> [2] <http://msdn.microsoft.com/en-us/library/kb57fad8%28v=vs.71%29.aspx> -- Samuli Seppänen Community Manager OpenVPN Technologies, Inc irc freenode net: mattock > Signed-off-by: Alon Bar-Lev <alon.bar...@gmail.com> > --- > src/error.c | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/src/error.c b/src/error.c > index 5b25f48..0541bc3 100755 > --- a/src/error.c > +++ b/src/error.c > @@ -81,6 +81,11 @@ MyDebugPrint (const unsigned char* format, ...) > NTSTATUS status; > char *end; > > +#ifdef DBG_PRINT > + va_start (args, format); > + vDbgPrintEx (DPFLTR_IHVNETWORK_ID, DPFLTR_INFO_LEVEL, format, > args); > + va_end (args); > +#endif > va_start (args, format); > status = RtlStringCchVPrintfExA (g_Debug.text + g_Debug.out, > remaining,