Index: src/main/java/java/util/regex/Pattern.java =================================================================== --- src/main/java/java/util/regex/Pattern.java (revision 549795) +++ src/main/java/java/util/regex/Pattern.java (working copy) @@ -83,6 +83,17 @@ public static final int CANON_EQ = 1 << 7; static final int BACK_REF_NUMBER = 10; + + /** + * Bit mask that includes all defined match flags + */ + static final int flagsBitMask = Pattern.UNIX_LINES | + Pattern.CASE_INSENSITIVE | + Pattern.COMMENTS | + Pattern.MULTILINE | + Pattern.DOTALL | + Pattern.UNICODE_CASE | + Pattern.CANON_EQ; /** * Current pattern to be compiled; @@ -259,6 +270,13 @@ */ public static Pattern compile(String regex, int flags) throws PatternSyntaxException { + + if ((flags != 0) && + ((flags | flagsBitMask) != flagsBitMask)) { + + throw new IllegalArgumentException(Messages.getString("regex.1C")); + } + AbstractSet.counter = 1; return new Pattern().compileImpl(regex, flags); Index: src/main/java/org/apache/harmony/regex/internal/nls/messages.properties =================================================================== --- src/main/java/org/apache/harmony/regex/internal/nls/messages.properties (revision 549795) +++ src/main/java/org/apache/harmony/regex/internal/nls/messages.properties (working copy) @@ -42,3 +42,4 @@ regex.19=Invalid octal escape sequence regex.1A=Illegal inline construct regex.1B=Pattern cannot be null +regex.1C=Invalid match flags value