aaron.ballman added inline comments.

================
Comment at: clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp:226
+    DiagnosticBuilder &Diag) {
+  if (getLangOpts().CPlusPlus11) {
+    StringRef NewFuncName = (Name[0] != 'w') ? "strncpy_s" : "wcsncpy_s";
----------------
Charusso wrote:
> aaron.ballman wrote:
> > Charusso wrote:
> > > aaron.ballman wrote:
> > > > What about C?
> > > The `else` part would fire.
> > I think this comment got moved to an unrelated area. I was talking about 
> > `NotNullTerminatedResultCheck::memmoveFix()`, where there is no `else` 
> > clause. However, I'm also not entirely certain why you are assuming the _s 
> > versions of those functions are available in C++ (they're in Annex K for C, 
> > which is an optional annex).
> The `else` clause is missing, according to the documentation: 
> 
> > - ``memmove``, ``wmemmove``:
> >   - C11: New function is ``memmove_s``/``wmemmove_s``, it has four 
> > arguments,
> >   - the new second argument is the first argument's length, and
> >   - the third argument will be moved as the fourth, where ``+ 1`` needed.
> > 
> >   - Before C11: The third argument gets a ``+ 1`` operation.
> 
> So the third argument as a token remains third if I add an extra second 
> argument as a string, that's why it's work well on both options.
I don't think you should assume the _s versions are available in C++, because 
they're not available everywhere. In fact, they're not available everywhere in 
C either (for instance, there is no Annex K implementation in glibc).

My recommendation would be to either gate this on the presence of a definition 
of the `__STDC_LIB_EXT1__` macro and that the ` __STDC_WANT_LIB_EXT1__` macro 
is defined but not defined to 0, or to make it a configurable option. I have a 
slight preference for the config option because not all implementations 
implement all of Annex K but still have a reasonable _s implementation of the 
Annex K APIs (like Microsoft's implementation) so I can picture users wanting a 
way to opt-in even without the macros.


https://reviews.llvm.org/D45050



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to