public
Description: A double-entry accounting system with a command-line reporting interface
Homepage: http://www.newartisans.com/software/ledger.html
Clone URL: git://github.com/jwiegley/ledger.git
Search Repo:
More fixes to restore parsing capability.
jwiegley (author)
Wed Jul 23 16:40:01 -0700 2008
commit  7409b050bee226fb7bb0b89a10d9c206d8797d70
tree    75c1e96e8b8dfc1bbfe0123eb6521b4b88d391fc
parent  90af21852458919a08420e86542a2ab2283cd4e9
...
62
63
64
65
66
 
 
 
67
68
69
70
71
72
73
74
 
 
 
 
 
 
 
75
76
77
78
 
79
 
80
81
82
...
178
179
180
181
182
183
 
 
 
 
 
184
185
186
 
 
 
 
187
188
189
...
62
63
64
 
 
65
66
67
68
69
 
 
 
 
 
 
70
71
72
73
74
75
76
77
 
78
 
79
80
81
82
83
84
...
180
181
182
 
 
 
183
184
185
186
187
188
 
 
189
190
191
192
193
194
195
0
@@ -62,21 +62,23 @@ namespace {
0
     }
0
 #endif
0
 
0
- if (! expr::compute_amount(expr, amount, xact))
0
- throw new parse_error("Amount expression failed to compute");
0
+ if (expr) {
0
+ if (! expr::compute_amount(expr, amount, xact))
0
+ throw new parse_error("Amount expression failed to compute");
0
 
0
 #if 0
0
- if (expr->kind == expr::node_t::VALUE) {
0
- expr = NULL;
0
- } else {
0
- DEBUG_IF("ledger.textual.parse") {
0
- std::cout << "Value expression tree:" << std::endl;
0
- ledger::dump_value_expr(std::cout, expr.get());
0
+ if (expr->kind == expr::node_t::VALUE) {
0
+ expr = NULL;
0
+ } else {
0
+ DEBUG_IF("ledger.textual.parse") {
0
+ std::cout << "Value expression tree:" << std::endl;
0
+ ledger::dump_value_expr(std::cout, expr.get());
0
+ }
0
       }
0
- }
0
 #else
0
- expr = value_expr();
0
+ expr = value_expr();
0
 #endif
0
+ }
0
 
0
     DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
0
    "The transaction amount is " << xact->amount);
0
@@ -178,12 +180,16 @@ transaction_t * parse_transaction(char * line, account_t * account,
0
        EXPR_PARSE_NO_REDUCE);
0
       saw_amount = true;
0
 
0
- xact->amount.reduce();
0
- DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
0
- "Reduced amount is " << xact->amount);
0
+ if (! xact->amount.is_null()) {
0
+ xact->amount.reduce();
0
+ DEBUG("ledger.textual.parse", "line " << linenum << ": " <<
0
+ "Reduced amount is " << xact->amount);
0
+ }
0
 
0
- unsigned long end = (long)in.tellg();
0
- xact->amount_expr.expr_str = string(line, beg, end - beg);
0
+ if (xact->amount_expr) {
0
+ unsigned long end = (long)in.tellg();
0
+ xact->amount_expr.expr_str = string(line, beg, end - beg);
0
+ }
0
     }
0
     catch (error * err) {
0
       err_desc = "While parsing transaction amount:";
...
794
795
796
797
 
798
799
800
...
794
795
796
 
797
798
799
800
0
@@ -794,7 +794,7 @@ public:
0
   }
0
 
0
   operator bool() const throw() {
0
- return ptr != NULL;
0
+ return ptr.get() != NULL;
0
   }
0
   operator string() const throw() {
0
     return expr_str;

Comments

    No one has commented yet.