Skip to content

Commit

Permalink
Merge pull request #61 from headius/group_name_encoding
Browse files Browse the repository at this point in the history
Provide encoding for group name exception
  • Loading branch information
headius committed May 23, 2023
2 parents d2a0fed + a074777 commit 4517290
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/org/joni/Regex.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@
import static org.joni.Option.isCaptureGroup;
import static org.joni.Option.isDontCaptureGroup;

import java.nio.charset.Charset;
import java.util.Collections;
import java.util.Iterator;

import org.jcodings.CaseFoldCodeItem;
import org.jcodings.Encoding;
import org.jcodings.EncodingDB;
import org.jcodings.specific.ASCIIEncoding;
import org.jcodings.specific.UTF8Encoding;
import org.jcodings.util.BytesHash;
Expand Down Expand Up @@ -88,6 +90,18 @@ public final class Regex {
byte[][]templates; /* fixed pattern strings not embedded in bytecode */
int templateNum;

private static final Encoding DEFAULT_ENCODING;
static {
Encoding defaultEncoding;
EncodingDB.Entry entry = EncodingDB.getEncodings().get(Charset.defaultCharset().name().getBytes());
if (entry == null) {
defaultEncoding = UTF8Encoding.INSTANCE;
} else {
defaultEncoding = entry.getEncoding();
}
DEFAULT_ENCODING = defaultEncoding;
}

public Regex(CharSequence cs) {
this(cs.toString());
}
Expand Down Expand Up @@ -232,9 +246,13 @@ NameEntry nameToGroupNumbers(byte[]name, int nameP, int nameEnd) {
}

public int nameToBackrefNumber(byte[]name, int nameP, int nameEnd, Region region) {
return nameToBackrefNumber(name, nameP, nameEnd, DEFAULT_ENCODING, region);
}

public int nameToBackrefNumber(byte[]name, int nameP, int nameEnd, Encoding nameEncoding, Region region) {
NameEntry e = nameToGroupNumbers(name, nameP, nameEnd);
if (e == null) throw new ValueException(ErrorMessages.UNDEFINED_NAME_REFERENCE,
new String(name, nameP, nameEnd - nameP));
new String(name, nameP, nameEnd - nameP, nameEncoding.getCharset()));

switch(e.backNum) {
case 0:
Expand Down

0 comments on commit 4517290

Please sign in to comment.