loplugin:stringconstant: warn about explicit length mismatch
(just in case) Change-Id: I9eaf6e920fc7fc3ebc8c705df1cdf34b325db74a Reviewed-on: https://gerrit.libreoffice.org/42614 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
@@ -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]}}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user