|
|
|
@ -252,6 +252,11 @@ public class URIish implements Serializable {
|
|
|
|
|
throw new URISyntaxException(s, JGitText.get().cannotParseGitURIish); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static int parseHexByte(byte c1, byte c2) { |
|
|
|
|
return ((RawParseUtils.parseHexInt4(c1) << 4) |
|
|
|
|
| RawParseUtils.parseHexInt4(c2)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static String unescape(String s) throws URISyntaxException { |
|
|
|
|
if (s == null) |
|
|
|
|
return null; |
|
|
|
@ -272,8 +277,14 @@ public class URIish implements Serializable {
|
|
|
|
|
if (c == '%') { |
|
|
|
|
if (i + 2 >= bytes.length) |
|
|
|
|
throw new URISyntaxException(s, JGitText.get().cannotParseGitURIish); |
|
|
|
|
int val = (RawParseUtils.parseHexInt4(bytes[i + 1]) << 4) |
|
|
|
|
| RawParseUtils.parseHexInt4(bytes[i + 2]); |
|
|
|
|
byte c1 = bytes[i + 1]; |
|
|
|
|
byte c2 = bytes[i + 2]; |
|
|
|
|
int val; |
|
|
|
|
try { |
|
|
|
|
val = parseHexByte(c1, c2); |
|
|
|
|
} catch (ArrayIndexOutOfBoundsException e) { |
|
|
|
|
throw new URISyntaxException(s, JGitText.get().cannotParseGitURIish); |
|
|
|
|
} |
|
|
|
|
os[j++] = (byte) val; |
|
|
|
|
i += 2; |
|
|
|
|
} else |
|
|
|
|