Browse Source

[Fix] Fix processing of '\v' in libucl

Issue: #2045
pull/2133/head
Vsevolod Stakhov 8 years ago
parent
commit
626c7a170f
  1. 10
      contrib/libucl/ucl_emitter_utils.c

10
contrib/libucl/ucl_emitter_utils.c

@ -102,7 +102,9 @@ ucl_elt_string_write_json (const char *str, size_t size,
func->ucl_emitter_append_character ('"', 1, func->ud);
while (size) {
if (ucl_test_character (*p, UCL_CHARACTER_JSON_UNSAFE|UCL_CHARACTER_DENIED)) {
if (ucl_test_character (*p, (UCL_CHARACTER_JSON_UNSAFE|
UCL_CHARACTER_DENIED|
UCL_CHARACTER_WHITESPACE_UNSAFE))) {
if (len > 0) {
func->ucl_emitter_append_len (c, len, func->ud);
}
@ -122,9 +124,15 @@ ucl_elt_string_write_json (const char *str, size_t size,
case '\f':
func->ucl_emitter_append_len ("\\f", 2, func->ud);
break;
case '\v':
func->ucl_emitter_append_len ("\\v", 2, func->ud);
break;
case '\\':
func->ucl_emitter_append_len ("\\\\", 2, func->ud);
break;
case ' ':
func->ucl_emitter_append_character (' ', 1, func->ud);
break;
case '"':
func->ucl_emitter_append_len ("\\\"", 2, func->ud);
break;

Loading…
Cancel
Save