Index: lib/src/percent/encoder.dart |
diff --git a/lib/src/percent/encoder.dart b/lib/src/percent/encoder.dart |
index c7817609e81c8adc762619d3d7ebd253d4ae7daa..9d05c21c582a5741a823683b8cb03c3d106504f8 100644 |
--- a/lib/src/percent/encoder.dart |
+++ b/lib/src/percent/encoder.dart |
@@ -66,7 +66,12 @@ String _convert(List<int> bytes, int start, int end) { |
// exactly `0b100000 = 0x20` less than lowercase letters, so if we ensure |
// that that bit is 1 we ensure that the letter is lowercase. |
var letter = 0x20 | byte; |
+ // If the byte is a digit, convert it to its value. All other byte values |
+ // are converted to a value greater than 9. |
+ // Negative values are detected elsewhere. |
+ var digit = 0x30 ^ byte; |
if ((letter >= $a && letter <= $z) || |
+ digit <= 9 || |
byte == $dash || |
byte == $dot || |
byte == $underscore || |