summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/csv.cc8
-rw-r--r--test/baseline/cmd-convert.test2
-rw-r--r--test/regress/0DDDEBC0.dat3
-rw-r--r--test/regress/0DDDEBC0.test9
-rw-r--r--test/regress/68917252.dat2
-rw-r--r--test/regress/68917252.test5
-rw-r--r--test/regress/A3FA7601.dat3
-rw-r--r--test/regress/A3FA7601.test9
8 files changed, 37 insertions, 4 deletions
diff --git a/src/csv.cc b/src/csv.cc
index dbd2dbfe..c7b75712 100644
--- a/src/csv.cc
+++ b/src/csv.cc
@@ -166,7 +166,7 @@ xact_t * csv_reader::read_xact(bool rich_data)
string total;
string field;
- while (instr.good() && ! instr.eof()) {
+ while (instr.good() && ! instr.eof() && n < index.size()) {
field = read_field(instr);
switch (index[n]) {
@@ -175,7 +175,8 @@ xact_t * csv_reader::read_xact(bool rich_data)
break;
case FIELD_DATE_AUX:
- xact->_date_aux = parse_date(field);
+ if (! field.empty())
+ xact->_date_aux = parse_date(field);
break;
case FIELD_CODE:
@@ -224,7 +225,8 @@ xact_t * csv_reader::read_xact(bool rich_data)
break;
case FIELD_NOTE:
- xact->note = field;
+ if (! field.empty())
+ xact->note = field;
break;
case FIELD_UNKNOWN:
diff --git a/test/baseline/cmd-convert.test b/test/baseline/cmd-convert.test
index 1c36d4bb..d444da52 100644
--- a/test/baseline/cmd-convert.test
+++ b/test/baseline/cmd-convert.test
@@ -4,7 +4,7 @@ test -f /dev/null --input-date-format "%m/%d/%Y" convert test/baseline/cmd-conve
Expenses:Unknown $10
Equity:Unknown $-10 = $20
-2011/12/12=2011/12/12 * ;
+2011/12/12=2011/12/12 *
Expenses:Unknown $10
Equity:Unknown
end test
diff --git a/test/regress/0DDDEBC0.dat b/test/regress/0DDDEBC0.dat
new file mode 100644
index 00000000..21b6fce1
--- /dev/null
+++ b/test/regress/0DDDEBC0.dat
@@ -0,0 +1,3 @@
+date,posted,amount,
+12/12/2011,12/13/2011,$10,
+12/12/2011,,$20,
diff --git a/test/regress/0DDDEBC0.test b/test/regress/0DDDEBC0.test
new file mode 100644
index 00000000..cccb1b6b
--- /dev/null
+++ b/test/regress/0DDDEBC0.test
@@ -0,0 +1,9 @@
+test -f /dev/null --input-date-format '%m/%d/%Y' convert test/regress/0DDDEBC0.dat
+2011/12/12=2011/12/13 *
+ Expenses:Unknown $10
+ Equity:Unknown
+
+2011/12/12 *
+ Expenses:Unknown $20
+ Equity:Unknown
+end test
diff --git a/test/regress/68917252.dat b/test/regress/68917252.dat
new file mode 100644
index 00000000..8857f741
--- /dev/null
+++ b/test/regress/68917252.dat
@@ -0,0 +1,2 @@
+date,amount,
+12/12/2011,10,test,extra,fields
diff --git a/test/regress/68917252.test b/test/regress/68917252.test
new file mode 100644
index 00000000..52fde1d9
--- /dev/null
+++ b/test/regress/68917252.test
@@ -0,0 +1,5 @@
+test -f /dev/null --input-date-format "%m/%d/%Y" convert test/regress/68917252.dat
+2011/12/12 *
+ Expenses:Unknown 10
+ Equity:Unknown
+end test
diff --git a/test/regress/A3FA7601.dat b/test/regress/A3FA7601.dat
new file mode 100644
index 00000000..9a734e67
--- /dev/null
+++ b/test/regress/A3FA7601.dat
@@ -0,0 +1,3 @@
+date,posted,code,payee,amount,total,note,
+12/12/2011,12/13/2011,100,Test,$10,$20,test,
+12/12/2011,12/12/2011,,,$10,$20,
diff --git a/test/regress/A3FA7601.test b/test/regress/A3FA7601.test
new file mode 100644
index 00000000..5029f6d8
--- /dev/null
+++ b/test/regress/A3FA7601.test
@@ -0,0 +1,9 @@
+test -f /dev/null --input-date-format '%m/%d/%Y' convert test/regress/A3FA7601.dat
+2011/12/12=2011/12/13 * (100) Test ;test
+ Expenses:Unknown $10
+ Equity:Unknown $-10 = $20
+
+2011/12/12=2011/12/12 *
+ Expenses:Unknown $10
+ Equity:Unknown $-10 = $20
+end test