Kaydet (Commit) 5c54b652 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

loplugin:stringconstant: warn about explicit length mismatch

(just in case)

Change-Id: I9eaf6e920fc7fc3ebc8c705df1cdf34b325db74a
Reviewed-on: https://gerrit.libreoffice.org/42614Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst 6d1c8a43
......@@ -842,11 +842,19 @@ bool StringConstant::VisitCXXConstructExpr(CXXConstructExpr const * expr) {
}
APSInt res;
if (!expr->getArg(1)->EvaluateAsInt(
res, compiler.getASTContext())
|| res != n)
res, compiler.getASTContext()))
{
return true;
}
if (res != n) {
report(
DiagnosticsEngine::Warning,
("suspicious 'rtl::OUString' constructor with literal"
" of length %0 and non-matching length argument %1"),
expr->getExprLoc())
<< n << res.toString(10) << expr->getSourceRange();
return true;
}
if (!expr->getArg(2)->EvaluateAsInt(
res, compiler.getASTContext()))
{
......
......@@ -64,6 +64,8 @@ int main() {
(void) OUString("xxx", 3, RTL_TEXTENCODING_ASCII_US); // expected-error {{simplify construction of 'OUString' with string constant argument [loplugin:stringconstant]}}
(void) OUString("xxx", 3, RTL_TEXTENCODING_ISO_8859_1); // expected-error {{simplify construction of 'OUString' with string constant argument (but beware, the given textencoding 12 is not RTL_TEXTENCODING_ASCII_US) [loplugin:stringconstant]}}
(void) OUString("x\xA0x", 3, RTL_TEXTENCODING_ISO_8859_1);
(void) OUString("xxx", 2, RTL_TEXTENCODING_ASCII_US); // expected-error {{suspicious 'rtl::OUString' constructor with literal of length 3 and non-matching length argument 2 [loplugin:stringconstant]}}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment