[PATCH] D45050: [clang-tidy] New checker for not null-terminated result caused by strlen(), size() or equal length

Jonas Toth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 26 06:45:12 PDT 2018


JonasToth added inline comments.


================
Comment at: clang-tidy/bugprone/NotNullTerminatedResultCheck.cpp:1038
+
+  SmallString<128> NewAddNullTermExprStr;
+  NewAddNullTermExprStr = "\n";
----------------
whisperity wrote:
> aaron.ballman wrote:
> > This should be done using a `Twine`.
> Can you please give an example of how to well-approach this? We had issues with using Twines on the stack and then later on running into weird undefined behaviour. The documentation is not clear to a lot of our colleagues on where the `Twine`'s usage barriers are... (Asking this not just for @Charusso but also for a few more colleagues, @baloghadamsoftware e.g.)
naive approach:

```
std::string New = Twine("\n").concat(SpaceBeforeStmtStr).concat(exprToStr(..))...).str();
```
I think retrieving a `SmallString` is not supported. Please note, that `Twine` does support taking integer and floats directly without prior conversion.
You can use `operator+` instead of `concat` too.

Did this help or did you have more specific issues? 


https://reviews.llvm.org/D45050





More information about the cfe-commits mailing list