commit e5845fea49e6c8a2cae0dfd8c708a31ae3d67719
Author: Georg Baum <[email protected]>
Date: Mon Nov 17 22:08:21 2014 +0100
Fix memory error detected by valgrind
The assignment name = sub.str(1) reads from the first argument given to
regex_match(), but previously this was a temporary object which was already
out of scope. This did probably not matter much in practice, but invoked
undefined behaviour, and as we all know this is allowed ton format your hard
disk or kill to your cat, so better fix this.
diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp
index 3436645..e787e1a 100644
--- a/src/LaTeX.cpp
+++ b/src/LaTeX.cpp
@@ -666,8 +666,8 @@ int LaTeX::scanLogFile(TeXErrors & terr)
size_t len = j == string::npos
? token.substr(i + 1).length()
: j - i - 1;
- if (regex_match(token.substr(i + 1, len),
- sub, child_file)) {
+ string const substr = token.substr(i + 1, len);
+ if (regex_match(substr, sub, child_file)) {
string const name = sub.str(1);
child.push(make_pair(name, pnest));
i += len;