From 4028f0bcb455ce4ea23c355b6a43dc6122447a78 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 7 May 2010 23:16:45 -0400 Subject: print command correctly prints amount expressions --- src/expr.cc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/expr.cc') diff --git a/src/expr.cc b/src/expr.cc index 79fb3611..8fed2b14 100644 --- a/src/expr.cc +++ b/src/expr.cc @@ -39,10 +39,21 @@ namespace ledger { void expr_t::parse(std::istream& in, const parse_flags_t& flags, const optional& original_string) { - base_type::parse(in, flags, original_string); - parser_t parser; + istream_pos_type start_pos = in.tellg(); ptr = parser.parse(in, flags, original_string); + istream_pos_type end_pos = in.tellg(); + + if (original_string) { + set_text(*original_string); + } else { + in.clear(); + 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); + set_text(buf.get()); + } } void expr_t::compile(scope_t& scope) -- cgit v1.2.3