Merge pull request #589 from simartin/restore_libcpp_build
Restore build with libc++ and revert PR#228 and PR#562.
This commit is contained in:
commit
19bba94282
|
@ -533,7 +533,7 @@ void CheckIO::checkWrongPrintfScanfArguments()
|
||||||
|
|
||||||
if (Token::Match(tok->next(), "( %any%") && _settings->library.formatstr_function(tok->str())) {
|
if (Token::Match(tok->next(), "( %any%") && _settings->library.formatstr_function(tok->str())) {
|
||||||
const std::map<int, Library::ArgumentChecks>& argumentChecks = _settings->library.argumentChecks.at(tok->str());
|
const std::map<int, Library::ArgumentChecks>& argumentChecks = _settings->library.argumentChecks.at(tok->str());
|
||||||
for (std::map<int, Library::ArgumentChecks>::const_iterator i = argumentChecks.begin(); i != argumentChecks.end(); ++i) {
|
for (std::map<int, Library::ArgumentChecks>::const_iterator i = argumentChecks.cbegin(); i != argumentChecks.cend(); ++i) {
|
||||||
if (i->second.formatstr) {
|
if (i->second.formatstr) {
|
||||||
formatStringArgNo = i->first - 1;
|
formatStringArgNo = i->first - 1;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1260,7 +1260,7 @@ void CheckStl::checkAutoPointer()
|
||||||
}
|
}
|
||||||
if (Token::Match(tok3, "( %var%")) {
|
if (Token::Match(tok3, "( %var%")) {
|
||||||
std::map<unsigned int, const std::string>::const_iterator it = mallocVarId.find(tok3->next()->varId());
|
std::map<unsigned int, const std::string>::const_iterator it = mallocVarId.find(tok3->next()->varId());
|
||||||
if (it != mallocVarId.end()) {
|
if (it != mallocVarId.cend()) {
|
||||||
// pointer on the memory allocated by malloc used in the auto pointer constructor -> error
|
// pointer on the memory allocated by malloc used in the auto pointer constructor -> error
|
||||||
autoPointerMallocError(tok2->next(), it->second);
|
autoPointerMallocError(tok2->next(), it->second);
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
bool formatstr_function(const std::string& funcname) const {
|
bool formatstr_function(const std::string& funcname) const {
|
||||||
return _formatstr.find(funcname) != _formatstr.end();
|
return _formatstr.find(funcname) != _formatstr.cend();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool formatstr_scan(const std::string& funcname) const {
|
bool formatstr_scan(const std::string& funcname) const {
|
||||||
|
|
|
@ -143,6 +143,8 @@ double MathLib::toDoubleNumber(const std::string &str)
|
||||||
// nullcheck
|
// nullcheck
|
||||||
else if (isNullValue(str))
|
else if (isNullValue(str))
|
||||||
return 0.0;
|
return 0.0;
|
||||||
|
else if (isFloat(str)) // Workaround libc++ bug at http://llvm.org/bugs/show_bug.cgi?id=17782
|
||||||
|
return std::strtod(str.c_str(), 0);
|
||||||
// otherwise, convert to double
|
// otherwise, convert to double
|
||||||
std::istringstream istr(str);
|
std::istringstream istr(str);
|
||||||
double ret;
|
double ret;
|
||||||
|
|
|
@ -170,20 +170,12 @@ void TestFixture::assertEquals(const char *filename, unsigned int linenr, const
|
||||||
|
|
||||||
void TestFixture::assertEquals(const char *filename, unsigned int linenr, long long expected, long long actual, const std::string &msg) const
|
void TestFixture::assertEquals(const char *filename, unsigned int linenr, long long expected, long long actual, const std::string &msg) const
|
||||||
{
|
{
|
||||||
std::ostringstream ostr1;
|
assertEquals(filename, linenr, MathLib::toString(expected), MathLib::toString(actual), msg);
|
||||||
ostr1 << expected;
|
|
||||||
std::ostringstream ostr2;
|
|
||||||
ostr2 << actual;
|
|
||||||
assertEquals(filename, linenr, ostr1.str(), ostr2.str(), msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestFixture::assertEqualsDouble(const char *filename, unsigned int linenr, double expected, double actual, const std::string &msg) const
|
void TestFixture::assertEqualsDouble(const char *filename, unsigned int linenr, double expected, double actual, const std::string &msg) const
|
||||||
{
|
{
|
||||||
std::ostringstream ostr1;
|
assertEquals(filename, linenr, MathLib::toString(expected), MathLib::toString(actual), msg);
|
||||||
ostr1 << expected;
|
|
||||||
std::ostringstream ostr2;
|
|
||||||
ostr2 << actual;
|
|
||||||
assertEquals(filename, linenr, ostr1.str(), ostr2.str(), msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestFixture::todoAssertEquals(const char *filename, unsigned int linenr,
|
void TestFixture::todoAssertEquals(const char *filename, unsigned int linenr,
|
||||||
|
@ -301,7 +293,7 @@ std::size_t TestFixture::runTests(const options& args)
|
||||||
|
|
||||||
if (!missingLibs.empty()) {
|
if (!missingLibs.empty()) {
|
||||||
std::cerr << "Missing libraries: ";
|
std::cerr << "Missing libraries: ";
|
||||||
for (std::set<std::string>::const_iterator i = missingLibs.begin(); i != missingLibs.end(); ++i)
|
for (std::set<std::string>::const_iterator i = missingLibs.cbegin(); i != missingLibs.cend(); ++i)
|
||||||
std::cerr << *i << " ";
|
std::cerr << *i << " ";
|
||||||
std::cerr << std::endl << std::endl;
|
std::cerr << std::endl << std::endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue