diff --git a/src/expr.cc b/src/expr.cc index 0769d575..5bc537d9 100644 --- a/src/expr.cc +++ b/src/expr.cc @@ -52,8 +52,9 @@ void expr_t::parse(std::istream& in, const parse_flags_t& flags, in.seekg(start_pos, std::ios::beg); scoped_array buf (new char[static_cast(end_pos - start_pos) + 1]); - in.read(buf.get(), end_pos - start_pos); - buf[end_pos - start_pos] = '\0'; + int len = static_cast(end_pos) - static_cast(start_pos); + in.read(buf.get(), len); + buf[len] = '\0'; set_text(buf.get()); } else {