[PATCH] D107654: [Flang] Fix error messages on Windows.

Adrian McCarthy via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 11 08:53:05 PDT 2021


amccarth added inline comments.


================
Comment at: flang/lib/Parser/message.cpp:44
+  // used in some messages.
+  int need{_vsprintf_p(nullptr, 0, p, ap)};
+#else
----------------
Meinersbur wrote:
> amccarth wrote:
> > I understand the intent is to determine the size of the buffer needed, but the [Microsoft documentation for `_vsprintf_p`][1] says,
> > 
> > > If the buffer or format parameters are NULL pointers, ... the invalid parameter handler is invoked, as described in Parameter Validation. If execution is allowed to continue, the functions return -1 and set errno to EINVAL.
> > 
> > But since this is passing a null pointer for the buffer, I'd expect this to abort or return -1.  Maybe that's a documentation bug.  Has this been tested on Windows?
> > 
> > [1]: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l?view=msvc-160#remarks
> This seems to be a documentation bug. The Windows SDK source explicitly checks for a NULL argument for the buffer and returns the length [1].
> 
> The behaviour isn't document for the standard vsprintf function either, see [2] or [3].
> 
> The pre-merge buildbot would be running this code in D107575 (if it was rebased). I tested it myself and it is working.
> 
> [1] https://github.com/huangqinjin/ucrt/blob/a52376780e631fb0e5d520748addb03651aef0b5/stdio/output.cpp#L169
> [2] https://www.cplusplus.com/reference/cstdio/vsprintf/
> [3] https://linux.die.net/man/3/vsprintf
Thanks.  I'll file a bug on the Microsoft docs.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D107654/new/

https://reviews.llvm.org/D107654



More information about the llvm-commits mailing list