@@ -164,11 +164,8 @@ Tokenizer::Tokenizer() :
164
164
mVarId(0),
165
165
mUnnamedCount(0),
166
166
mCodeWithTemplates(false), //is there any templates?
167
- mTimerResults(nullptr)
168
- #ifdef MAXTIME
169
- , mMaxTime(std::time(0) + MAXTIME)
170
- #endif
171
- , mPreprocessor(nullptr)
167
+ mTimerResults(nullptr),
168
+ mPreprocessor(nullptr)
172
169
{}
173
170
174
171
Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger) :
@@ -180,11 +177,8 @@ Tokenizer::Tokenizer(const Settings *settings, ErrorLogger *errorLogger) :
180
177
mVarId(0),
181
178
mUnnamedCount(0),
182
179
mCodeWithTemplates(false), //is there any templates?
183
- mTimerResults(nullptr)
184
- #ifdef MAXTIME
185
- ,mMaxTime(std::time(0) + MAXTIME)
186
- #endif
187
- , mPreprocessor(nullptr)
180
+ mTimerResults(nullptr),
181
+ mPreprocessor(nullptr)
188
182
{
189
183
// make sure settings are specified
190
184
assert(mSettings);
@@ -614,15 +608,29 @@ void Tokenizer::simplifyTypedef()
614
608
// Convert "using a::b;" to corresponding typedef statements
615
609
simplifyUsingToTypedef();
616
610
611
+ const std::time_t maxTime = mSettings->typedefMaxTime > 0 ? std::time(nullptr) + mSettings->typedefMaxTime: 0;
612
+
617
613
for (Token *tok = list.front(); tok; tok = tok->next()) {
618
614
if (mErrorLogger && !list.getFiles().empty())
619
615
mErrorLogger->reportProgress(list.getFiles()[0], "Tokenize (typedef)", tok->progressValue());
620
616
621
617
if (Settings::terminated())
622
618
return;
623
619
624
- if (isMaxTime())
620
+ if (maxTime > 0 && std::time(nullptr) > maxTime) {
621
+ if (mSettings->debugwarnings) {
622
+ ErrorMessage::FileLocation loc;
623
+ loc.setfile(list.getFiles()[0]);
624
+ ErrorMessage errmsg({std::move(loc)},
625
+ emptyString,
626
+ Severity::debug,
627
+ "Typedef simplification instantation maximum time exceeded",
628
+ "typedefMaxTime",
629
+ Certainty::normal);
630
+ mErrorLogger->reportErr(errmsg);
631
+ }
625
632
return;
633
+ }
626
634
627
635
if (goback) {
628
636
//jump back once, see the comment at the end of the function
@@ -3461,12 +3469,9 @@ void Tokenizer::simplifyTemplates()
3461
3469
if (isC())
3462
3470
return;
3463
3471
3472
+ const std::time_t maxTime = mSettings->templateMaxTime > 0 ? std::time(nullptr) + mSettings->templateMaxTime : 0;
3464
3473
mTemplateSimplifier->simplifyTemplates(
3465
- #ifdef MAXTIME
3466
- mMaxTime,
3467
- #else
3468
- 0, // ignored
3469
- #endif
3474
+ maxTime,
3470
3475
mCodeWithTemplates);
3471
3476
}
3472
3477
//---------------------------------------------------------------------------
0 commit comments