internal/export/idna: fix error message
by moving incement to the right place.
Change-Id: I04d06639fde5bf6768b53ea33f347b3e145ade53
Reviewed-on: https://go-review.googlesource.com/38695
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/internal/export/idna/example_test.go b/internal/export/idna/example_test.go
index 6e31be9..6e6b872 100644
--- a/internal/export/idna/example_test.go
+++ b/internal/export/idna/example_test.go
@@ -49,6 +49,10 @@
idna.Transitional(true)) // Map ß -> ss
fmt.Println(p.ToASCII("*.faß.com"))
+ // Lookup for registration. Also does not allow '*'.
+ p = idna.New(idna.ValidateForRegistration())
+ fmt.Println(p.ToUnicode("*.faß.com"))
+
// Set up a profile maps for lookup, but allows wild cards.
p = idna.New(
idna.MapForLookup(),
@@ -58,6 +62,7 @@
// Output:
// *.xn--fa-hia.com <nil>
- // *.fass.com idna: disallowed rune U+002E
+ // *.fass.com idna: disallowed rune U+002A
+ // *.faß.com idna: disallowed rune U+002A
// *.fass.com <nil>
}
diff --git a/internal/export/idna/idna.go b/internal/export/idna/idna.go
index a3d9ad2..3184fbb 100644
--- a/internal/export/idna/idna.go
+++ b/internal/export/idna/idna.go
@@ -373,23 +373,20 @@
if !norm.NFC.IsNormalString(s) {
return s, &labelError{s, "V1"}
}
- var err error
for i := 0; i < len(s); {
v, sz := trie.lookupString(s[i:])
- i += sz
// Copy bytes not copied so far.
switch p.simplify(info(v).category()) {
// TODO: handle the NV8 defined in the Unicode idna data set to allow
// for strict conformance to IDNA2008.
case valid, deviation:
case disallowed, mapped, unknown, ignored:
- if err == nil {
- r, _ := utf8.DecodeRuneInString(s[i:])
- err = runeError(r)
- }
+ r, _ := utf8.DecodeRuneInString(s[i:])
+ return s, runeError(r)
}
+ i += sz
}
- return s, err
+ return s, nil
}
func validateAndMap(p *Profile, s string) (string, error) {
@@ -408,7 +405,7 @@
continue
case disallowed:
if err == nil {
- r, _ := utf8.DecodeRuneInString(s[i:])
+ r, _ := utf8.DecodeRuneInString(s[start:])
err = runeError(r)
}
continue