summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/NEWS4
-rw-r--r--src/token.cc4
-rw-r--r--test/regress/981.test28
3 files changed, 34 insertions, 2 deletions
diff --git a/doc/NEWS b/doc/NEWS
index af89de0c..001258d2 100644
--- a/doc/NEWS
+++ b/doc/NEWS
@@ -1,5 +1,9 @@
Ledger NEWS
+* 3.1.2
+
+- Increased maximum length for regex from 255 to 4095.
+
* 3.1.1
- Added a --no-revalued option
diff --git a/src/token.cc b/src/token.cc
index 0bbff6ea..f616ae3e 100644
--- a/src/token.cc
+++ b/src/token.cc
@@ -303,8 +303,8 @@ void expr_t::token_t::next(std::istream& in, const parse_flags_t& pflags)
kind = SLASH;
} else { // terminal context
// Read in the regexp
- char buf[256];
- READ_INTO_(in, buf, 255, c, length, c != '/');
+ char buf[4096];
+ READ_INTO_(in, buf, 4095, c, length, c != '/');
if (c != '/')
expected('/', c);
in.get(c);
diff --git a/test/regress/981.test b/test/regress/981.test
new file mode 100644
index 00000000..14ef19ff
--- /dev/null
+++ b/test/regress/981.test
@@ -0,0 +1,28 @@
+
+; Test a regex longer than 255 char
+
+tag Project
+ check value =~ /^(0ad|ankur|aptosid|archlinux|chakra|debian|debconf14|debconf15|debconf16|drizzle|ffmpeg|ffmpeg|fluxbox|freedesktop|freedombox|gallery|texmacs|haskell|jenkins|libreoffice|madwifi|mingw|openvas|openwrt|openbioinformatics|openembedded|openvoting|osunix|path64|plan9|postgresql|privoxy|smc|helios|tidesdk|tux4kids|yafaray|spi)$/
+
+2016-01-01 * Test - correct tag
+ Expenses:Hosting 20.00 USD
+ ; Project: debian
+ Assets:Cash -20.00 USD
+
+2016-02-01 * Test - wrong tag
+ Expenses:Hosting 20.00 USD
+ ; Project: foo
+ Assets:Cash -20.00 USD
+
+test bal
+ -40.00 USD Assets:Cash
+ 40.00 USD Expenses:Hosting
+--------------------
+ 0
+__ERROR__
+Warning: "/home/tbm/tmp/src/ledger/test/regress/981.test", line 15: Metadata check failed for (Project: foo): (value =~ /^(0ad|ankur|aptosid|archlinux|chakra|debian|debconf14|debconf15|debconf16|drizzle|ffmpeg|ffmpeg|fluxbox|freedesktop|freedombox|gallery|texmacs|haskell|jenkins|libreoffice|madwifi|mingw|openvas|openwrt|openbioinformatics|openembedded|openvoting|osunix|path64|plan9|postgresql|privoxy|smc|helios|tidesdk|tux4kids|yafaray|spi)$/)
+end test
+
+test reg --limit 'payee =~ /XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/'
+end test
+