Silence clang static analyzer warnings

This commit is contained in:
Howard Hinnant 2017-10-03 12:45:09 -04:00
parent 3acb299f3f
commit 2e213abb76

View File

@ -93,6 +93,7 @@
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <exception>
#include <fstream>
#include <iostream>
#include <iterator>
@ -918,6 +919,8 @@ detail::operator>>(std::istream& is, MonthDayTime& x)
{
using namespace date;
using namespace std::chrono;
assert(((std::ios::failbit | std::ios::badbit) & is.exceptions()) ==
(std::ios::failbit | std::ios::badbit));
x = MonthDayTime{};
if (!is.eof() && ws(is) && !is.eof() && is.peek() != '#')
{
@ -935,11 +938,11 @@ detail::operator>>(std::istream& is, MonthDayTime& x)
else if (std::isalpha(is.peek()))
{
auto dow = parse_dow(is);
char c;
char c{};
is >> c;
if (c == '<' || c == '>')
{
char c2;
char c2{};
is >> c2;
if (c2 != '=')
throw std::runtime_error(std::string("bad operator: ") + c + c2);
@ -1398,7 +1401,7 @@ find_previous_rule(const Rule* r, date::year y)
if (y == r->starting_year())
{
if (r == &rules.front() || r->name() != r[-1].name())
return {nullptr, year::min()};
std::terminate(); // never called with first rule
--r;
if (y == r->starting_year())
return {r, y};