Fix space handling in url_en/decode

This commit is contained in:
2026-06-17 17:34:07 +02:00
parent 12222e9a0f
commit c9f43c152d
2 changed files with 9 additions and 10 deletions

View File

@@ -51,8 +51,7 @@ void url_encode(Noh_String *string) {
for (size_t i = 0; i < string->count; i++) { for (size_t i = 0; i < string->count; i++) {
char cur = string->elems[i]; char cur = string->elems[i];
if (cur == ' ') noh_da_append(&result, '+'); if (cur == ' ') noh_da_append(&result, '+');
else if (!byte_is_url_safe(cur)) {
if (!byte_is_url_safe(cur)) {
noh_da_append(&result, '%'); noh_da_append(&result, '%');
noh_da_append(&result, to_char_lower(cur >> 4)); noh_da_append(&result, to_char_lower(cur >> 4));
noh_da_append(&result, to_char_lower(cur)); noh_da_append(&result, to_char_lower(cur));

View File

@@ -39,21 +39,21 @@ int main() {
check_string(url_encode, &good, &bad, check_string(url_encode, &good, &bad,
"abcdefghijklmnopqrstuvwxyz 1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/", "abcdefghijklmnopqrstuvwxyz 1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/",
"abcdefghijklmnopqrstuvwxyz1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/"); "abcdefghijklmnopqrstuvwxyz+1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/");
check_string(url_encode, &good, &bad, check_string(url_encode, &good, &bad,
"~!@#$%^&* ()_+-=", "~!@#$%^&* ()_+-=",
"%7e!%40%23%24%25%5e%26*()_%2b-%3d"); "%7e!%40%23%24%25%5e%26*+()_%2b-%3d");
noh_log(NOH_INFO, ""); noh_log(NOH_INFO, "");
noh_log(NOH_INFO, "url_decode:"); noh_log(NOH_INFO, "url_decode:");
check_string(url_decode, &good, &bad, check_string(url_decode, &good, &bad,
"abcdefghijklmnopqrstuvwxyz1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/", "abcdefghijklmnopqrstuvwxyz+1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/",
"abcdefghijklmnopqrstuvwxyz 1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/"); "abcdefghijklmnopqrstuvwxyz 1023456789ABCDEFGHIJKLMNOPQRSTUVWXYZ()*!-._/");
check_string(url_decode, &good, &bad, check_string(url_decode, &good, &bad,
"%7e!%40%23%24%25%5e%26*()_%2b-%3d", "%7e!%40%23%24%25%5e%26*+()_%2b-%3d",
"~!@#$%^&* ()_+-="); "~!@#$%^&* ()_+-=");
noh_log(NOH_INFO, ""); noh_log(NOH_INFO, "");