http://bugzilla.novell.com/show_bug.cgi?id=577346
http://bugzilla.novell.com/show_bug.cgi?id=577346#c2 --- Comment #2 from Miguel de Icaza <[email protected]> 2010-07-19 23:49:13 UTC --- It seems like the only way to solve this will be to scan the regular expression twice and cant be done with a single pass. I tried this change in parse.cs's ParseEscape: // // It could be an octal value that starts with // a digit, as long as the \N is less than the number // of capture groups // case '1': case '2': case '3': case '4': case '5': case '6': case '7': { ptr--; int oprevptr = ptr; int dresult = ParseDecimal (pattern, ref ptr); // If it is a backreference, let the ParseSpecial handle it. if (dresult < 10 || dresult <= caps.Count){ ptr = p; return -1; } ptr = oprevptr; return ParseOctal (pattern, ref ptr); } But this change breaks with a regular expression like this (it currently passes): Matching input 'aa' against pattern '\10((((((((((a))))))))))' with options 'RightToLeft' The above change is also wrong in that it ignores the Options = EcmaScript that would use the old interpretation. Alternatively, we could fix this by changing the backreferences into characters in the resolve phase after the parsing is complete. -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
