New upstream release 1.89
This commit is contained in:
parent
b1deeef945
commit
1442c51633
1
.gitignore
vendored
1
.gitignore
vendored
@ -39,3 +39,4 @@ cppcheck-1.44.tar.bz2
|
|||||||
/cppcheck-1.86.tar.gz
|
/cppcheck-1.86.tar.gz
|
||||||
/cppcheck-1.87.tar.gz
|
/cppcheck-1.87.tar.gz
|
||||||
/cppcheck-1.88.tar.gz
|
/cppcheck-1.88.tar.gz
|
||||||
|
/cppcheck-1.89.tar.gz
|
||||||
|
154
1939.patch
154
1939.patch
@ -1,154 +0,0 @@
|
|||||||
From 025129663032ab6a2c12e529a0a1a96aeca10db7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Reif <reif@FX6840>
|
|
||||||
Date: Sun, 30 Jun 2019 18:00:28 -0400
|
|
||||||
Subject: [PATCH] template simplifier: consistently handle templates with no
|
|
||||||
arguments
|
|
||||||
|
|
||||||
this fixes daca boost1.67 crashes
|
|
||||||
---
|
|
||||||
lib/templatesimplifier.cpp | 20 ++++++++++----------
|
|
||||||
test/testsimplifytemplate.cpp | 30 ++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 40 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/templatesimplifier.cpp b/lib/templatesimplifier.cpp
|
|
||||||
index 4a121e642b..0e0423691f 100644
|
|
||||||
--- a/lib/templatesimplifier.cpp
|
|
||||||
+++ b/lib/templatesimplifier.cpp
|
|
||||||
@@ -1048,7 +1048,7 @@ void TemplateSimplifier::useDefaultArgumentValues(TokenAndName &declaration)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (tok->str() == "<" && templateParameters(tok))
|
|
||||||
+ if (tok->str() == "<" && (tok->strAt(1) == ">" || templateParameters(tok)))
|
|
||||||
++templateParmDepth;
|
|
||||||
|
|
||||||
// end of template parameters?
|
|
||||||
@@ -1101,7 +1101,7 @@ void TemplateSimplifier::useDefaultArgumentValues(TokenAndName &declaration)
|
|
||||||
instantiationArgs[index].push_back(tok1);
|
|
||||||
tok1 = tok1->next();
|
|
||||||
} while (tok1 && tok1 != endLink);
|
|
||||||
- } else if (tok1->str() == "<") {
|
|
||||||
+ } else if (tok1->str() == "<" && (tok1->strAt(1) == ">" || templateParameters(tok1))) {
|
|
||||||
const Token *endLink = tok1->findClosingBracket();
|
|
||||||
do {
|
|
||||||
instantiationArgs[index].push_back(tok1);
|
|
||||||
@@ -1134,7 +1134,7 @@ void TemplateSimplifier::useDefaultArgumentValues(TokenAndName &declaration)
|
|
||||||
const Token *from = (*it)->next();
|
|
||||||
std::stack<Token *> links;
|
|
||||||
while (from && (!links.empty() || indentlevel || !Token::Match(from, ",|>"))) {
|
|
||||||
- if (from->str() == "<")
|
|
||||||
+ if (from->str() == "<" && (from->strAt(1) == ">" || templateParameters(from)))
|
|
||||||
++indentlevel;
|
|
||||||
else if (from->str() == ">")
|
|
||||||
--indentlevel;
|
|
||||||
@@ -1181,7 +1181,7 @@ void TemplateSimplifier::useDefaultArgumentValues(TokenAndName &declaration)
|
|
||||||
}
|
|
||||||
if (Token::Match(tok2, "(|{|["))
|
|
||||||
tok2 = tok2->link();
|
|
||||||
- else if (Token::Match(tok2, "%type% <") && templateParameters(tok2->next())) {
|
|
||||||
+ else if (Token::Match(tok2, "%type% <") && (tok2->strAt(2) == ">" || templateParameters(tok2->next()))) {
|
|
||||||
std::list<TokenAndName>::iterator ti = std::find_if(mTemplateInstantiations.begin(),
|
|
||||||
mTemplateInstantiations.end(),
|
|
||||||
FindToken(tok2));
|
|
||||||
@@ -1346,7 +1346,7 @@ bool TemplateSimplifier::instantiateMatch(const Token *instance, const std::size
|
|
||||||
const Token *tok = instance;
|
|
||||||
unsigned int indentlevel = 0;
|
|
||||||
for (tok = instance; tok && (tok->str() != ">" || indentlevel > 0); tok = tok->next()) {
|
|
||||||
- if (Token::Match(tok, "<|,|(|:: %name% <") && templateParameters(tok->tokAt(2)) > 0)
|
|
||||||
+ if (Token::Match(tok, "<|,|(|:: %name% <") && (tok->strAt(3) == ">" || templateParameters(tok->tokAt(2))))
|
|
||||||
++indentlevel;
|
|
||||||
if (indentlevel > 0 && tok->str() == ">")
|
|
||||||
--indentlevel;
|
|
||||||
@@ -1637,7 +1637,7 @@ void TemplateSimplifier::expandTemplate(
|
|
||||||
typetok = typetok->tokAt(2);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
- if (Token::Match(typetok, "%name% <") && templateParameters(typetok->next()) > 0)
|
|
||||||
+ if (Token::Match(typetok, "%name% <") && (typetok->strAt(2) == ">" || templateParameters(typetok->next())))
|
|
||||||
++typeindentlevel;
|
|
||||||
else if (typeindentlevel > 0 && typetok->str() == ">")
|
|
||||||
--typeindentlevel;
|
|
||||||
@@ -1859,7 +1859,7 @@ void TemplateSimplifier::expandTemplate(
|
|
||||||
if (Token::simpleMatch(typetok, ". . .")) {
|
|
||||||
typetok = typetok->tokAt(2);
|
|
||||||
} else {
|
|
||||||
- if (Token::Match(typetok, "%name% <") && templateParameters(typetok->next()) > 0)
|
|
||||||
+ if (Token::Match(typetok, "%name% <") && (typetok->strAt(2) == ">" || templateParameters(typetok->next())))
|
|
||||||
++typeindentlevel;
|
|
||||||
else if (typeindentlevel > 0 && typetok->str() == ">")
|
|
||||||
--typeindentlevel;
|
|
||||||
@@ -1939,7 +1939,7 @@ void TemplateSimplifier::expandTemplate(
|
|
||||||
typetok = typetok->tokAt(2);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
- if (Token::Match(typetok, "%name% <") && templateParameters(typetok->next()) > 0)
|
|
||||||
+ if (Token::Match(typetok, "%name% <") && (typetok->strAt(2) == ">" || templateParameters(typetok->next())))
|
|
||||||
++typeindentlevel;
|
|
||||||
else if (typeindentlevel > 0 && typetok->str() == ">")
|
|
||||||
--typeindentlevel;
|
|
||||||
@@ -2710,7 +2710,7 @@ std::string TemplateSimplifier::getNewName(
|
|
||||||
typeForNewName.clear();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
- if (Token::Match(tok3->tokAt(-2), "<|,|:: %name% <") && templateParameters(tok3) > 0)
|
|
||||||
+ if (Token::Match(tok3->tokAt(-2), "<|,|:: %name% <") && (tok3->strAt(1) == ">" || templateParameters(tok3)))
|
|
||||||
++indentlevel;
|
|
||||||
else if (indentlevel > 0 && Token::Match(tok3, "> [,>]"))
|
|
||||||
--indentlevel;
|
|
||||||
@@ -2975,7 +2975,7 @@ void TemplateSimplifier::replaceTemplateUsage(
|
|
||||||
const Token *typetok = (!mTypesUsedInTemplateInstantiation.empty()) ? mTypesUsedInTemplateInstantiation[0].token : nullptr;
|
|
||||||
unsigned int indentlevel2 = 0; // indentlevel for tokgt
|
|
||||||
while (tok2 != endToken && (indentlevel2 > 0 || tok2->str() != ">")) {
|
|
||||||
- if (tok2->str() == "<" && templateParameters(tok2) > 0)
|
|
||||||
+ if (tok2->str() == "<" && (tok2->strAt(1) == ">" || templateParameters(tok2)))
|
|
||||||
++indentlevel2;
|
|
||||||
else if (indentlevel2 > 0 && Token::Match(tok2, "> [,>]"))
|
|
||||||
--indentlevel2;
|
|
||||||
diff --git a/test/testsimplifytemplate.cpp b/test/testsimplifytemplate.cpp
|
|
||||||
index c1b3214e2d..bcfcebd03c 100644
|
|
||||||
--- a/test/testsimplifytemplate.cpp
|
|
||||||
+++ b/test/testsimplifytemplate.cpp
|
|
||||||
@@ -157,6 +157,7 @@ class TestSimplifyTemplate : public TestFixture {
|
|
||||||
TEST_CASE(template117);
|
|
||||||
TEST_CASE(template118);
|
|
||||||
TEST_CASE(template119); // #9186
|
|
||||||
+ TEST_CASE(template120);
|
|
||||||
TEST_CASE(template_specialization_1); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
|
|
||||||
TEST_CASE(template_specialization_2); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
|
|
||||||
TEST_CASE(template_enum); // #6299 Syntax error in complex enum declaration (including template)
|
|
||||||
@@ -2819,6 +2820,35 @@ class TestSimplifyTemplate : public TestFixture {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ void template120() {
|
|
||||||
+ const char code[] = "template<typename Tuple>\n"
|
|
||||||
+ "struct lambda_context {\n"
|
|
||||||
+ " template<typename Sig> struct result;\n"
|
|
||||||
+ " template<typename This, typename I>\n"
|
|
||||||
+ " struct result<This(terminal, placeholder)> : at<Tuple, I> {};\n"
|
|
||||||
+ "};\n"
|
|
||||||
+ "template<typename T>\n"
|
|
||||||
+ "struct lambda {\n"
|
|
||||||
+ " template<typename Sig> struct result;\n"
|
|
||||||
+ " template<typename This>\n"
|
|
||||||
+ " struct result<This()> : lambda_context<tuple<> > {};\n"
|
|
||||||
+ "};\n"
|
|
||||||
+ "lambda<int> l;";
|
|
||||||
+ const char exp[] = "template < typename Tuple > "
|
|
||||||
+ "struct lambda_context { "
|
|
||||||
+ "template < typename Sig > struct result ; "
|
|
||||||
+ "template < typename This , typename I > "
|
|
||||||
+ "struct result < This ( terminal , placeholder ) > : at < Tuple , I > { } ; "
|
|
||||||
+ "} ; "
|
|
||||||
+ "struct lambda<int> ; "
|
|
||||||
+ "lambda<int> l ; struct lambda<int> { "
|
|
||||||
+ "template < typename Sig > struct result ; "
|
|
||||||
+ "template < typename This > "
|
|
||||||
+ "struct result < This ( ) > : lambda_context < tuple < > > { } ; "
|
|
||||||
+ "} ;";
|
|
||||||
+ ASSERT_EQUALS(exp, tok(code));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
void template_specialization_1() { // #7868 - template specialization template <typename T> struct S<C<T>> {..};
|
|
||||||
const char code[] = "template <typename T> struct C {};\n"
|
|
||||||
"template <typename T> struct S {a};\n"
|
|
100
1943.patch
100
1943.patch
@ -1,100 +0,0 @@
|
|||||||
From e1f980c0e98540cdf0f4210c71dbd7f2d916abe7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Reif <reif@FX6840>
|
|
||||||
Date: Mon, 1 Jul 2019 19:43:23 -0400
|
|
||||||
Subject: [PATCH] Fixed #9193 (functionStatic false positive (inconclusive))
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/templatesimplifier.cpp | 4 +++-
|
|
||||||
test/testclass.cpp | 15 +++++++++++++++
|
|
||||||
test/testsimplifytemplate.cpp | 11 +++++++++++
|
|
||||||
3 files changed, 29 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/templatesimplifier.cpp b/lib/templatesimplifier.cpp
|
|
||||||
index 0e0423691f..893849743a 100644
|
|
||||||
--- a/lib/templatesimplifier.cpp
|
|
||||||
+++ b/lib/templatesimplifier.cpp
|
|
||||||
@@ -1094,19 +1094,21 @@ void TemplateSimplifier::useDefaultArgumentValues(TokenAndName &declaration)
|
|
||||||
continue;
|
|
||||||
if (end != instantiation.token->tokAt(2))
|
|
||||||
instantiationArgs.resize(1);
|
|
||||||
- for (const Token *tok1 = instantiation.token->tokAt(2); tok1 && tok1!= end; tok1 = tok1->next()) {
|
|
||||||
+ for (const Token *tok1 = instantiation.token->tokAt(2); tok1 && tok1 != end; tok1 = tok1->next()) {
|
|
||||||
if (tok1->link() && Token::Match(tok1, "{|(|[")) {
|
|
||||||
const Token *endLink = tok1->link();
|
|
||||||
do {
|
|
||||||
instantiationArgs[index].push_back(tok1);
|
|
||||||
tok1 = tok1->next();
|
|
||||||
} while (tok1 && tok1 != endLink);
|
|
||||||
+ instantiationArgs[index].push_back(tok1);
|
|
||||||
} else if (tok1->str() == "<" && (tok1->strAt(1) == ">" || templateParameters(tok1))) {
|
|
||||||
const Token *endLink = tok1->findClosingBracket();
|
|
||||||
do {
|
|
||||||
instantiationArgs[index].push_back(tok1);
|
|
||||||
tok1 = tok1->next();
|
|
||||||
} while (tok1 && tok1 != endLink);
|
|
||||||
+ instantiationArgs[index].push_back(tok1);
|
|
||||||
} else if (tok1->str() == ",") {
|
|
||||||
++index;
|
|
||||||
instantiationArgs.resize(index + 1);
|
|
||||||
diff --git a/test/testclass.cpp b/test/testclass.cpp
|
|
||||||
index f0ac9cc747..0e0a86d198 100644
|
|
||||||
--- a/test/testclass.cpp
|
|
||||||
+++ b/test/testclass.cpp
|
|
||||||
@@ -174,6 +174,7 @@ class TestClass : public TestFixture {
|
|
||||||
TEST_CASE(const64); // ticket #6268
|
|
||||||
TEST_CASE(const65); // ticket #8693
|
|
||||||
TEST_CASE(const66); // ticket #7714
|
|
||||||
+ TEST_CASE(const67); // ticket #9193
|
|
||||||
TEST_CASE(const_handleDefaultParameters);
|
|
||||||
TEST_CASE(const_passThisToMemberOfOtherClass);
|
|
||||||
TEST_CASE(assigningPointerToPointerIsNotAConstOperation);
|
|
||||||
@@ -5661,6 +5662,20 @@ class TestClass : public TestFixture {
|
|
||||||
ASSERT_EQUALS("", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
+ void const67() { // #9193
|
|
||||||
+ checkConst("template <class VALUE_T, class LIST_T = std::list<VALUE_T> >\n"
|
|
||||||
+ "class TestList {\n"
|
|
||||||
+ "public:\n"
|
|
||||||
+ " LIST_T m_list;\n"
|
|
||||||
+ "};\n"
|
|
||||||
+ "class Test {\n"
|
|
||||||
+ "public:\n"
|
|
||||||
+ " const std::list<std::shared_ptr<int>>& get() { return m_test.m_list; }\n"
|
|
||||||
+ " TestList<std::shared_ptr<int>> m_test;\n"
|
|
||||||
+ "};\n");
|
|
||||||
+ ASSERT_EQUALS("[test.cpp:8]: (style, inconclusive) Technically the member function 'Test::get' can be const.\n", errout.str());
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
void const_handleDefaultParameters() {
|
|
||||||
checkConst("struct Foo {\n"
|
|
||||||
" void foo1(int i, int j = 0) {\n"
|
|
||||||
diff --git a/test/testsimplifytemplate.cpp b/test/testsimplifytemplate.cpp
|
|
||||||
index bcfcebd03c..337391571e 100644
|
|
||||||
--- a/test/testsimplifytemplate.cpp
|
|
||||||
+++ b/test/testsimplifytemplate.cpp
|
|
||||||
@@ -158,6 +158,7 @@ class TestSimplifyTemplate : public TestFixture {
|
|
||||||
TEST_CASE(template118);
|
|
||||||
TEST_CASE(template119); // #9186
|
|
||||||
TEST_CASE(template120);
|
|
||||||
+ TEST_CASE(template121); // #9193
|
|
||||||
TEST_CASE(template_specialization_1); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
|
|
||||||
TEST_CASE(template_specialization_2); // #7868 - template specialization template <typename T> struct S<C<T>> {..};
|
|
||||||
TEST_CASE(template_enum); // #6299 Syntax error in complex enum declaration (including template)
|
|
||||||
@@ -2849,6 +2850,16 @@ class TestSimplifyTemplate : public TestFixture {
|
|
||||||
ASSERT_EQUALS(exp, tok(code));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ void template121() { // #9193
|
|
||||||
+ const char code[] = "template <class VALUE_T, class LIST_T = std::list<VALUE_T>>\n"
|
|
||||||
+ "class TestList { };\n"
|
|
||||||
+ "TestList<std::shared_ptr<int>> m_test;";
|
|
||||||
+ const char exp[] = "class TestList<std::shared_ptr<int>,std::list<std::shared_ptr<int>>> ; "
|
|
||||||
+ "TestList<std::shared_ptr<int>,std::list<std::shared_ptr<int>>> m_test ; "
|
|
||||||
+ "class TestList<std::shared_ptr<int>,std::list<std::shared_ptr<int>>> { } ;";
|
|
||||||
+ ASSERT_EQUALS(exp, tok(code));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
void template_specialization_1() { // #7868 - template specialization template <typename T> struct S<C<T>> {..};
|
|
||||||
const char code[] = "template <typename T> struct C {};\n"
|
|
||||||
"template <typename T> struct S {a};\n"
|
|
@ -1,39 +0,0 @@
|
|||||||
Only in cppcheck-1.88: .astylerc
|
|
||||||
Only in cppcheck-1.88: .codacy.yml
|
|
||||||
Only in cppcheck-1.88: .gitignore
|
|
||||||
diff -urp cppcheck-1.88.orig/gui/CMakeLists.txt cppcheck-1.88/gui/CMakeLists.txt
|
|
||||||
--- cppcheck-1.88.orig/gui/CMakeLists.txt 2019-07-01 20:46:32.662721323 -0400
|
|
||||||
+++ cppcheck-1.88/gui/CMakeLists.txt 2019-07-01 20:48:29.298708807 -0400
|
|
||||||
@@ -30,7 +30,7 @@ if (BUILD_GUI)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install(TARGETS cppcheck-gui RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications)
|
|
||||||
- install(FILES ${qms} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications)
|
|
||||||
+ install(FILES ${qms} DESTINATION share/${PROJECT_NAME}/lang COMPONENT applications)
|
|
||||||
|
|
||||||
install(FILES cppcheck-gui.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
|
|
||||||
|
|
||||||
diff -urp cppcheck-1.88.orig/gui/translationhandler.cpp cppcheck-1.88/gui/translationhandler.cpp
|
|
||||||
--- cppcheck-1.88.orig/gui/translationhandler.cpp 2019-06-29 03:51:25.000000000 -0400
|
|
||||||
+++ cppcheck-1.88/gui/translationhandler.cpp 2019-07-01 20:49:18.750703500 -0400
|
|
||||||
@@ -116,15 +116,7 @@ bool TranslationHandler::setLanguage(con
|
|
||||||
if (datadir.isEmpty())
|
|
||||||
datadir = appPath;
|
|
||||||
|
|
||||||
- QString translationFile;
|
|
||||||
- if (QFile::exists(datadir + "/lang/" + mTranslations[index].mFilename + ".qm"))
|
|
||||||
- translationFile = datadir + "/lang/" + mTranslations[index].mFilename + ".qm";
|
|
||||||
-
|
|
||||||
- else if (QFile::exists(datadir + "/" + mTranslations[index].mFilename + ".qm"))
|
|
||||||
- translationFile = datadir + "/" + mTranslations[index].mFilename + ".qm";
|
|
||||||
-
|
|
||||||
- else
|
|
||||||
- translationFile = appPath + "/" + mTranslations[index].mFilename + ".qm";
|
|
||||||
+ QString translationFile("/usr/share/CppCheck/lang/" + mTranslations[index].mFilename + ".qm");
|
|
||||||
|
|
||||||
if (!mTranslator->load(translationFile) && !failure) {
|
|
||||||
//If it failed, lets check if the default file exists
|
|
||||||
Only in cppcheck-1.88: .mailmap
|
|
||||||
Only in cppcheck-1.88: .travis_llvmcheck_suppressions
|
|
||||||
Only in cppcheck-1.88: .travis_suppressions
|
|
||||||
Only in cppcheck-1.88: .travis.yml
|
|
12
cppcheck-1.89-manual.patch
Normal file
12
cppcheck-1.89-manual.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -urp cppcheck-1.89.orig/man/manual.docbook cppcheck-1.89/man/manual.docbook
|
||||||
|
--- cppcheck-1.89.orig/man/manual.docbook 2019-09-01 09:01:12.000000000 -0400
|
||||||
|
+++ cppcheck-1.89/man/manual.docbook 2019-12-07 14:04:54.363409384 -0500
|
||||||
|
@@ -1217,7 +1217,7 @@ Checking pen1.c...
|
||||||
|
</resource>
|
||||||
|
</def></programlisting>
|
||||||
|
|
||||||
|
- <para>Functions that reallocate memory can be configured using a realloc tag. The input argument which points to the memory that shall be reallocated can also be configured (the default is the first argument). As an example, here is a configuration file for the fopen, freopen and fclose functions from the c standard library:
|
||||||
|
+ <para>Functions that reallocate memory can be configured using a realloc tag. The input argument which points to the memory that shall be reallocated can also be configured (the default is the first argument). As an example, here is a configuration file for the fopen, freopen and fclose functions from the c standard library:</para>
|
||||||
|
|
||||||
|
<programlisting><?xml version="1.0"?>
|
||||||
|
<def>
|
32
cppcheck-1.89-translations.patch
Normal file
32
cppcheck-1.89-translations.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
diff -urp cppcheck-1.89.orig/gui/CMakeLists.txt cppcheck-1.89/gui/CMakeLists.txt
|
||||||
|
--- cppcheck-1.89.orig/gui/CMakeLists.txt 2019-12-07 13:41:32.651559443 -0500
|
||||||
|
+++ cppcheck-1.89/gui/CMakeLists.txt 2019-12-07 13:45:16.037535529 -0500
|
||||||
|
@@ -30,7 +30,7 @@ if (BUILD_GUI)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
install(TARGETS cppcheck-gui RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications)
|
||||||
|
- install(FILES ${qms} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} COMPONENT applications)
|
||||||
|
+ install(FILES ${qms} DESTINATION share/${PROJECT_NAME}/lang COMPONENT applications)
|
||||||
|
|
||||||
|
install(FILES cppcheck-gui.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
|
||||||
|
|
||||||
|
diff -urp cppcheck-1.89.orig/gui/translationhandler.cpp cppcheck-1.89/gui/translationhandler.cpp
|
||||||
|
--- cppcheck-1.89.orig/gui/translationhandler.cpp 2019-09-01 09:01:12.000000000 -0400
|
||||||
|
+++ cppcheck-1.89/gui/translationhandler.cpp 2019-12-07 13:46:47.085525782 -0500
|
||||||
|
@@ -116,15 +116,7 @@ bool TranslationHandler::setLanguage(con
|
||||||
|
if (datadir.isEmpty())
|
||||||
|
datadir = appPath;
|
||||||
|
|
||||||
|
- QString translationFile;
|
||||||
|
- if (QFile::exists(datadir + "/lang/" + mTranslations[index].mFilename + ".qm"))
|
||||||
|
- translationFile = datadir + "/lang/" + mTranslations[index].mFilename + ".qm";
|
||||||
|
-
|
||||||
|
- else if (QFile::exists(datadir + "/" + mTranslations[index].mFilename + ".qm"))
|
||||||
|
- translationFile = datadir + "/" + mTranslations[index].mFilename + ".qm";
|
||||||
|
-
|
||||||
|
- else
|
||||||
|
- translationFile = appPath + "/" + mTranslations[index].mFilename + ".qm";
|
||||||
|
+ QString translationFile("/usr/share/CppCheck/lang/" + mTranslations[index].mFilename + ".qm");
|
||||||
|
|
||||||
|
if (!mTranslator->load(translationFile) && !failure) {
|
||||||
|
//If it failed, lets check if the default file exists
|
@ -2,8 +2,8 @@
|
|||||||
%global gui 1
|
%global gui 1
|
||||||
|
|
||||||
Name: cppcheck
|
Name: cppcheck
|
||||||
Version: 1.88
|
Version: 1.89
|
||||||
Release: 5%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Tool for static C/C++ code analysis
|
Summary: Tool for static C/C++ code analysis
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
URL: http://cppcheck.wiki.sourceforge.net/
|
URL: http://cppcheck.wiki.sourceforge.net/
|
||||||
@ -12,16 +12,13 @@ Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.
|
|||||||
# Use system tinyxml2
|
# Use system tinyxml2
|
||||||
Patch0: cppcheck-1.88-tinyxml.patch
|
Patch0: cppcheck-1.88-tinyxml.patch
|
||||||
# Fix location of translations
|
# Fix location of translations
|
||||||
Patch1: cppcheck-1.88-translations.patch
|
Patch1: cppcheck-1.89-translations.patch
|
||||||
# Set location of config files
|
# Set location of config files
|
||||||
Patch2: cppcheck-1.87-cfgdir.patch
|
Patch2: cppcheck-1.87-cfgdir.patch
|
||||||
# Select python3 explicitly
|
# Select python3 explicitly
|
||||||
Patch3: cppcheck-1.88-htmlreport-python3.patch
|
Patch3: cppcheck-1.88-htmlreport-python3.patch
|
||||||
|
# Fixup missing </para> in manual
|
||||||
# BZ #1733663
|
Patch4: cppcheck-1.89-manual.patch
|
||||||
Patch4: https://github.com/danmar/cppcheck/pull/1939.patch
|
|
||||||
# BZ #1733663
|
|
||||||
Patch5: https://github.com/danmar/cppcheck/pull/1943.patch
|
|
||||||
|
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
BuildRequires: pcre-devel
|
BuildRequires: pcre-devel
|
||||||
@ -80,8 +77,7 @@ from xml files first generated using cppcheck.
|
|||||||
%patch1 -p1 -b .translations
|
%patch1 -p1 -b .translations
|
||||||
%patch2 -p1 -b .cfgdir
|
%patch2 -p1 -b .cfgdir
|
||||||
%patch3 -p1 -b .python3
|
%patch3 -p1 -b .python3
|
||||||
%patch4 -p1 -b .bz1733663a
|
%patch4 -p1 -b .manual
|
||||||
%patch5 -p1 -b .bz1733663b
|
|
||||||
# Make sure bundled tinyxml is not used
|
# Make sure bundled tinyxml is not used
|
||||||
rm -r externals/tinyxml
|
rm -r externals/tinyxml
|
||||||
|
|
||||||
@ -96,7 +92,7 @@ xsltproc --nonet -o man/manual.html \
|
|||||||
mkdir objdir-%{_target_platform}
|
mkdir objdir-%{_target_platform}
|
||||||
cd objdir-%{_target_platform}
|
cd objdir-%{_target_platform}
|
||||||
# Upstream doesn't support shared libraries (unversioned solib)
|
# Upstream doesn't support shared libraries (unversioned solib)
|
||||||
%cmake .. -DCMAKE_BUILD_TYPE=Release -DHAVE_RULES=1 -DBUILD_GUI=%{gui} -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTS=1 -DCFGDIR=%{_datadir}/Cppcheck
|
%cmake .. -DCMAKE_BUILD_TYPE=Release -DMATCHCOMPILER=yes -DHAVE_RULES=yes -DBUILD_GUI=%{gui} -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTS=yes -DFILESDIR=%{_datadir}/Cppcheck
|
||||||
# SMP make doesn't seem to work
|
# SMP make doesn't seem to work
|
||||||
make cppcheck
|
make cppcheck
|
||||||
|
|
||||||
@ -139,6 +135,9 @@ cd objdir-%{_target_platform}/bin
|
|||||||
%{_bindir}/cppcheck-htmlreport
|
%{_bindir}/cppcheck-htmlreport
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Dec 07 2019 Steve Grubb <sgrubb@redhat.com> - 1.89-1
|
||||||
|
- New upstream release 1.89
|
||||||
|
|
||||||
* Fri Aug 16 2019 Susi Lehtola <susi.lehtola@iki.fi> - 1.88-5
|
* Fri Aug 16 2019 Susi Lehtola <susi.lehtola@iki.fi> - 1.88-5
|
||||||
- rebuilt
|
- rebuilt
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (cppcheck-1.88.tar.gz) = fa4ede0665546341af0ba3dae09a00b6efae09ec7838c616c580be01ff6902594d61168a059539779be0c78e1708d2bd9c8e7987dd0bb67dc8fa332a10d1de6a
|
SHA512 (cppcheck-1.89.tar.gz) = 0e8f7ae6fe70261f69954ec830c20faff37126ec41a7fdc59ce91db99313a1c99e1850656efeb7182a37fb78fbf8402b71d72a11d6189a5bede2819bdde69b9b
|
||||||
|
Loading…
Reference in New Issue
Block a user