fixed punycode sorting
This commit is contained in:
parent
fd0ff2023b
commit
e7599d2ca0
13
src/psl2c.c
13
src/psl2c.c
|
@ -298,13 +298,14 @@ static int _str_needs_encoding(const char *s)
|
||||||
|
|
||||||
static void _add_punycode_if_needed(_psl_vector_t *v)
|
static void _add_punycode_if_needed(_psl_vector_t *v)
|
||||||
{
|
{
|
||||||
int it;
|
int it, n;
|
||||||
|
|
||||||
for (it = 0; it < v->cur; it++) {
|
// do not use 'it < v->cur' since v->cur is changed by _vector_add() !
|
||||||
|
for (it = 0, n = v->cur; it < n; it++) {
|
||||||
_psl_entry_t *e = _vector_get(v, it);
|
_psl_entry_t *e = _vector_get(v, it);
|
||||||
|
|
||||||
if (_str_needs_encoding(e->label_buf)) {
|
if (_str_needs_encoding(e->label_buf)) {
|
||||||
_psl_entry_t suffix;
|
_psl_entry_t suffix, *suffixp;
|
||||||
|
|
||||||
// the following lines will have GPL3+ license issues
|
// the following lines will have GPL3+ license issues
|
||||||
/* char *asc = NULL;
|
/* char *asc = NULL;
|
||||||
|
@ -314,7 +315,8 @@ static void _add_punycode_if_needed(_psl_vector_t *v)
|
||||||
// fprintf(stderr, "idn2 '%s' -> '%s'\n", e->label_buf, asc);
|
// fprintf(stderr, "idn2 '%s' -> '%s'\n", e->label_buf, asc);
|
||||||
_suffix_init(&suffix, asc, strlen(asc));
|
_suffix_init(&suffix, asc, strlen(asc));
|
||||||
suffix.wildcard = e->wildcard;
|
suffix.wildcard = e->wildcard;
|
||||||
_vector_add(v, &suffix);
|
suffixp = _vector_get(v, _vector_add(v, &suffix));
|
||||||
|
suffixp->label = suffixp->e_label_buf; // set label to changed address
|
||||||
} else
|
} else
|
||||||
fprintf(stderr, "toASCII(%s) failed (%d): %s\n", e->label_buf, rc, idn2_strerror(rc));
|
fprintf(stderr, "toASCII(%s) failed (%d): %s\n", e->label_buf, rc, idn2_strerror(rc));
|
||||||
*/
|
*/
|
||||||
|
@ -328,7 +330,8 @@ static void _add_punycode_if_needed(_psl_vector_t *v)
|
||||||
// fprintf(stderr, "idn2 '%s' -> '%s'\n", e->label_buf, lookupname);
|
// fprintf(stderr, "idn2 '%s' -> '%s'\n", e->label_buf, lookupname);
|
||||||
_suffix_init(&suffix, lookupname, strlen(lookupname));
|
_suffix_init(&suffix, lookupname, strlen(lookupname));
|
||||||
suffix.wildcard = e->wildcard;
|
suffix.wildcard = e->wildcard;
|
||||||
_vector_add(v, &suffix);
|
suffixp = _vector_get(v, _vector_add(v, &suffix));
|
||||||
|
suffixp->label = suffixp->label_buf; // set label to changed address
|
||||||
}
|
}
|
||||||
pclose(pp);
|
pclose(pp);
|
||||||
} else
|
} else
|
||||||
|
|
Loading…
Reference in New Issue