Revision: 490
http://www.exim.org/viewvc/pcre2?view=rev&revision=490
Author: ph10
Date: 2016-02-13 15:30:29 +0000 (Sat, 13 Feb 2016)
Log Message:
-----------
Detect missing closing parentheses during the pre-pass.
Modified Paths:
--------------
code/trunk/ChangeLog
code/trunk/src/pcre2_compile.c
code/trunk/testdata/testinput18
code/trunk/testdata/testinput2
code/trunk/testdata/testinput8
code/trunk/testdata/testoutput18
code/trunk/testdata/testoutput2
code/trunk/testdata/testoutput8-16-2
code/trunk/testdata/testoutput8-16-3
code/trunk/testdata/testoutput8-16-4
code/trunk/testdata/testoutput8-32-2
code/trunk/testdata/testoutput8-32-3
code/trunk/testdata/testoutput8-32-4
code/trunk/testdata/testoutput8-8-2
code/trunk/testdata/testoutput8-8-3
code/trunk/testdata/testoutput8-8-4
Modified: code/trunk/ChangeLog
===================================================================
--- code/trunk/ChangeLog 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/ChangeLog 2016-02-13 15:30:29 UTC (rev 490)
@@ -62,7 +62,10 @@
nested set of parentheses of sufficient size caused an overflow of the
compiling workspace (which was diagnosed, but of course is not desirable).
+13. Detect missing closing parentheses during the pre-pass for group
+identification.
+
Version 10.21 12-January-2016
-----------------------------
Modified: code/trunk/src/pcre2_compile.c
===================================================================
--- code/trunk/src/pcre2_compile.c 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/src/pcre2_compile.c 2016-02-13 15:30:29 UTC (rev 490)
@@ -3180,6 +3180,7 @@
uint32_t delimiter;
uint32_t nest_depth = 0;
uint32_t set, unset, *optset;
+uint32_t skiptoket = 0;
int errorcode = 0;
int escape;
int namelen;
@@ -3186,7 +3187,6 @@
int i;
BOOL inescq = FALSE;
BOOL isdupname;
-BOOL skiptoket = FALSE;
BOOL utf = (options & PCRE2_UTF) != 0;
BOOL negate_class;
PCRE2_SPTR name;
@@ -3213,10 +3213,10 @@
next closing parenthesis must be ignored. The parenthesis itself must be
processed (to end the nested parenthesized item). */
- if (skiptoket)
+ if (skiptoket != 0)
{
if (c != CHAR_RIGHT_PARENTHESIS) continue;
- skiptoket = FALSE;
+ skiptoket = 0;
}
/* Skip over literals */
@@ -3231,17 +3231,16 @@
continue;
}
- /* Skip over comments and whitespace in extended mode. Need a loop to handle
- whitespace after a comment. */
+ /* Skip over # comments and whitespace in extended mode. */
if ((options & PCRE2_EXTENDED) != 0)
{
- for (;;)
+ PCRE2_SPTR wscptr = ptr;
+ while (MAX_255(c) && (cb->ctypes[c] & ctype_space) != 0) c = *(++ptr);
+ if (c == CHAR_NUMBER_SIGN)
{
- while (MAX_255(c) && (cb->ctypes[c] & ctype_space) != 0) c = *(++ptr);
- if (c != CHAR_NUMBER_SIGN) break;
ptr++;
- while (*ptr != CHAR_NULL)
+ while (ptr < cb->end_pattern)
{
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */
{ /* IS_NEWLINE sets cb->nllen. */
@@ -3253,8 +3252,16 @@
if (utf) FORWARDCHAR(ptr);
#endif
}
- c = *ptr; /* Either NULL or the char after a newline */
}
+
+ /* If we skipped any characters, restart the loop. Otherwise, we didn't see
+ a comment. */
+
+ if (ptr > wscptr)
+ {
+ ptr--;
+ continue;
+ }
}
/* Process the next pattern item. */
@@ -3411,7 +3418,7 @@
IS_DIGIT(ptr[0]) || /* (?n) */
(ptr[0] == CHAR_MINUS && IS_DIGIT(ptr[1]))) /* (?-n) */
{
- skiptoket = TRUE;
+ skiptoket = ptr[0];
break;
}
@@ -3755,9 +3762,17 @@
}
}
-cb->final_bracount = cb->bracount;
-return 0;
+if (nest_depth == 0)
+ {
+ cb->final_bracount = cb->bracount;
+ return 0;
+ }
+/* We give a special error for a missing closing parentheses after (?# because
+it might otherwise be hard to see where the missing character is. */
+
+errorcode = (skiptoket == CHAR_NUMBER_SIGN)? ERR18 : ERR14;
+
FAILED:
*ptrptr = ptr;
return errorcode;
@@ -5901,22 +5916,22 @@
goto FAILED;
}
cb->had_accept = TRUE;
-
+
/* In the first pass, just accumulate the length required;
otherwise hitting (*ACCEPT) inside many nested parentheses can
cause workspace overflow. */
-
+
for (oc = cb->open_caps; oc != NULL; oc = oc->next)
{
if (lengthptr != NULL)
{
- *lengthptr += CU2BYTES(1) + IMM2_SIZE;
+ *lengthptr += CU2BYTES(1) + IMM2_SIZE;
}
else
- {
+ {
*code++ = OP_CLOSE;
PUT2INC(code, 0, oc->number);
- }
+ }
}
setverb = *code++ =
(cb->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT;
@@ -7056,7 +7071,9 @@
}
}
- /* Error if hit end of pattern */
+ /* At the end of a group, it's an error if we hit end of pattern or
+ any non-closing parenthesis. This check also happens in the pre-scan,
+ so should not trigger here, but leave this code as an insurance. */
if (*ptr != CHAR_RIGHT_PARENTHESIS)
{
Modified: code/trunk/testdata/testinput18
===================================================================
--- code/trunk/testdata/testinput18 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testinput18 2016-02-13 15:30:29 UTC (rev 490)
@@ -95,6 +95,8 @@
"(?(?C)"
+"(?(?C))"
+
/abcd/substitute_extended
/\[A]{1000000}**/expand,regerror_buffsize=31
Modified: code/trunk/testdata/testinput2
===================================================================
--- code/trunk/testdata/testinput2 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testinput2 2016-02-13 15:30:29 UTC (rev 490)
@@ -4428,6 +4428,8 @@
/(?R-:(?</
+/(?R-:(?<)/
+
/(?(?C{\Q})(?!(?'/
/(?(?C{\Q})(?!(?'abc')))/I
Modified: code/trunk/testdata/testinput8
===================================================================
--- code/trunk/testdata/testinput8 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testinput8 2016-02-13 15:30:29 UTC (rev 490)
@@ -184,4 +184,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput18
===================================================================
--- code/trunk/testdata/testoutput18 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput18 2016-02-13 15:30:29 UTC (rev 490)
@@ -142,6 +142,9 @@
Failed: POSIX code 9: bad escape sequence at offset 3
"(?(?C)"
+Failed: POSIX code 11: unbalanced () at offset 6
+
+"(?(?C))"
Failed: POSIX code 3: pattern error at offset 2
/abcd/substitute_extended
Modified: code/trunk/testdata/testoutput2
===================================================================
--- code/trunk/testdata/testoutput2 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput2 2016-02-13 15:30:29 UTC (rev 490)
@@ -545,7 +545,7 @@
Failed: error 127 at offset 12: conditional group contains more than two branches
/(?(1a)/
-Failed: error 126 at offset 4: malformed number or name after (?(
+Failed: error 114 at offset 6: missing closing parenthesis
/(?(1a))/
Failed: error 126 at offset 4: malformed number or name after (?(
@@ -14401,6 +14401,9 @@
------------------------------------------------------------------
/(?R-:(?</
+Failed: error 114 at offset 8: missing closing parenthesis
+
+/(?R-:(?<)/
Failed: error 129 at offset 3: (?R or (?[+-]digits must be followed by )
/(?(?C{\Q})(?!(?'/
@@ -14502,7 +14505,7 @@
0: ab
/(?(8000000000/
-Failed: error 161 at offset 13: number is too big
+Failed: error 114 at offset 13: missing closing parenthesis
/((?(R8000000000)))/
Failed: error 161 at offset 16: number is too big
Modified: code/trunk/testdata/testoutput8-16-2
===================================================================
--- code/trunk/testdata/testoutput8-16-2 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-16-2 2016-02-13 15:30:29 UTC (rev 490)
@@ -1028,6 +1028,9 @@
Subject length lower bound = 0
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
+Failed: error 114 at offset 509: missing closing parenthesis
+
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
Failed: error 186 at offset 490: regular expression is too complicated
# End of testinput8
Modified: code/trunk/testdata/testoutput8-16-3
===================================================================
--- code/trunk/testdata/testoutput8-16-3 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-16-3 2016-02-13 15:30:29 UTC (rev 490)
@@ -1026,4 +1026,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-16-4
===================================================================
--- code/trunk/testdata/testoutput8-16-4 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-16-4 2016-02-13 15:30:29 UTC (rev 490)
@@ -1026,4 +1026,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-32-2
===================================================================
--- code/trunk/testdata/testoutput8-32-2 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-32-2 2016-02-13 15:30:29 UTC (rev 490)
@@ -1026,4 +1026,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-32-3
===================================================================
--- code/trunk/testdata/testoutput8-32-3 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-32-3 2016-02-13 15:30:29 UTC (rev 490)
@@ -1026,4 +1026,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-32-4
===================================================================
--- code/trunk/testdata/testoutput8-32-4 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-32-4 2016-02-13 15:30:29 UTC (rev 490)
@@ -1026,4 +1026,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-8-2
===================================================================
--- code/trunk/testdata/testoutput8-8-2 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-8-2 2016-02-13 15:30:29 UTC (rev 490)
@@ -1029,4 +1029,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-8-3
===================================================================
--- code/trunk/testdata/testoutput8-8-3 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-8-3 2016-02-13 15:30:29 UTC (rev 490)
@@ -1027,4 +1027,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8
Modified: code/trunk/testdata/testoutput8-8-4
===================================================================
--- code/trunk/testdata/testoutput8-8-4 2016-02-10 18:24:02 UTC (rev 489)
+++ code/trunk/testdata/testoutput8-8-4 2016-02-13 15:30:29 UTC (rev 490)
@@ -1025,4 +1025,6 @@
/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis
+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode
+
# End of testinput8