@@ -1154,7 +1154,7 @@ yaml_emitter_check_simple_key(yaml_emitter_t *emitter)
1156 case YAML_MAPPING_START_EVENT:
1156 case YAML_MAPPING_START_EVENT:
1157− if (!yaml_emitter_check_empty_sequence(emitter))
1157+ if (!yaml_emitter_check_empty_mapping(emitter))
1158 return 0;
1158 return 0;
1159 length += emitter->anchor_data.anchor_length
1159 length += emitter->anchor_data.anchor_length
1160 + emitter->tag_data.handle_length
1160 + emitter->tag_data.handle_length
@@ -1349,10 +1349,15 @@ static int
1349yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter,
1349yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter,
1350 yaml_tag_directive_t tag_directive)
1350 yaml_tag_directive_t tag_directive)
1352− yaml_string_t handle = STRING(tag_directive.handle,
1352+ yaml_string_t handle;
1353+ yaml_string_t prefix;
1354+ size_t handle_length;
1355+ size_t prefix_length;
1353− strlen((char *)tag_directive.handle));
1357+ handle_length = strlen((char *)tag_directive.handle);
1354− yaml_string_t prefix = STRING(tag_directive.prefix,
1358+ prefix_length = strlen((char *)tag_directive.prefix);
1359+ STRING_ASSIGN(handle, tag_directive.handle, handle_length);
1355− strlen((char *)tag_directive.prefix));
1360+ STRING_ASSIGN(prefix, tag_directive.prefix, prefix_length);
1357 if (handle.start == handle.end) {
1362 if (handle.start == handle.end) {
1358 return yaml_emitter_set_emitter_error(emitter,
1363 return yaml_emitter_set_emitter_error(emitter,
@@ -1395,7 +1400,11 @@ static int
1395yaml_emitter_analyze_anchor(yaml_emitter_t *emitter,
1400yaml_emitter_analyze_anchor(yaml_emitter_t *emitter,
1396 yaml_char_t *anchor, int alias)
1401 yaml_char_t *anchor, int alias)
1403+ size_t anchor_length;
1398− yaml_string_t string = STRING(anchor, strlen((char *)anchor));
1404+ yaml_string_t string;
1406+ anchor_length = strlen((char *)anchor);
1407+ STRING_ASSIGN(string, anchor, anchor_length);
1400 if (string.start == string.end) {
1409 if (string.start == string.end) {
1401 return yaml_emitter_set_emitter_error(emitter, alias ?
1410 return yaml_emitter_set_emitter_error(emitter, alias ?
@@ -1427,9 +1436,13 @@ static int
1427yaml_emitter_analyze_tag(yaml_emitter_t *emitter,
1436yaml_emitter_analyze_tag(yaml_emitter_t *emitter,
1428 yaml_char_t *tag)
1437 yaml_char_t *tag)
1430− yaml_string_t string = STRING(tag, strlen((char *)tag));
1440+ yaml_string_t string;
1431 yaml_tag_directive_t *tag_directive;
1441 yaml_tag_directive_t *tag_directive;
1443+ tag_length = strlen((char *)tag);
1444+ STRING_ASSIGN(string, tag, tag_length);
1433 if (string.start == string.end) {
1446 if (string.start == string.end) {
1434 return yaml_emitter_set_emitter_error(emitter,
1447 return yaml_emitter_set_emitter_error(emitter,
1435 "tag value must not be empty");
1448 "tag value must not be empty");
@@ -1466,7 +1479,7 @@ static int
1466yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
1479yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
1467 yaml_char_t *value, size_t length)
1480 yaml_char_t *value, size_t length)
1469− yaml_string_t string = STRING(value, length);
1482+ yaml_string_t string;
1471 int block_indicators = 0;
1484 int block_indicators = 0;
1472 int flow_indicators = 0;
1485 int flow_indicators = 0;
@@ -1485,6 +1498,8 @@ yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
1485 int previous_space = 0;
1498 int previous_space = 0;
1486 int previous_break = 0;
1499 int previous_break = 0;
1501+ STRING_ASSIGN(string, value, length);
1488 emitter->scalar_data.value = value;
1503 emitter->scalar_data.value = value;
1489 emitter->scalar_data.length = length;
1504 emitter->scalar_data.length = length;
@@ -1772,7 +1787,11 @@ yaml_emitter_write_indicator(yaml_emitter_t *emitter,
1772 char *indicator, int need_whitespace,
1787 char *indicator, int need_whitespace,
1773 int is_whitespace, int is_indention)
1788 int is_whitespace, int is_indention)
1790+ size_t indicator_length;
1775− yaml_string_t string = STRING((yaml_char_t *)indicator, strlen(indicator));
1791+ yaml_string_t string;
1793+ indicator_length = strlen(indicator);
1794+ STRING_ASSIGN(string, (yaml_char_t *)indicator, indicator_length);
1777 if (need_whitespace && !emitter->whitespace) {
1796 if (need_whitespace && !emitter->whitespace) {
1778 if (!PUT(emitter, ' ')) return 0;
1797 if (!PUT(emitter, ' ')) return 0;
@@ -1793,7 +1812,8 @@ static int
1793yaml_emitter_write_anchor(yaml_emitter_t *emitter,
1812yaml_emitter_write_anchor(yaml_emitter_t *emitter,
1794 yaml_char_t *value, size_t length)
1813 yaml_char_t *value, size_t length)
1796− yaml_string_t string = STRING(value, length);
1815+ yaml_string_t string;
1816+ STRING_ASSIGN(string, value, length);
1798 while (string.pointer != string.end) {
1818 while (string.pointer != string.end) {
1799 if (!WRITE(emitter, string)) return 0;
1819 if (!WRITE(emitter, string)) return 0;
@@ -1809,7 +1829,8 @@ static int
1809yaml_emitter_write_tag_handle(yaml_emitter_t *emitter,
1829yaml_emitter_write_tag_handle(yaml_emitter_t *emitter,
1810 yaml_char_t *value, size_t length)
1830 yaml_char_t *value, size_t length)
1812− yaml_string_t string = STRING(value, length);
1832+ yaml_string_t string;
1833+ STRING_ASSIGN(string, value, length);
1814 if (!emitter->whitespace) {
1835 if (!emitter->whitespace) {
1815 if (!PUT(emitter, ' ')) return 0;
1836 if (!PUT(emitter, ' ')) return 0;
@@ -1830,7 +1851,8 @@ yaml_emitter_write_tag_content(yaml_emitter_t *emitter,
1830 yaml_char_t *value, size_t length,
1851 yaml_char_t *value, size_t length,
1831 int need_whitespace)
1852 int need_whitespace)
1833− yaml_string_t string = STRING(value, length);
1854+ yaml_string_t string;
1855+ STRING_ASSIGN(string, value, length);
1835 if (need_whitespace && !emitter->whitespace) {
1857 if (need_whitespace && !emitter->whitespace) {
1836 if (!PUT(emitter, ' ')) return 0;
1858 if (!PUT(emitter, ' ')) return 0;
@@ -1876,10 +1898,12 @@ static int
1876yaml_emitter_write_plain_scalar(yaml_emitter_t *emitter,
1898yaml_emitter_write_plain_scalar(yaml_emitter_t *emitter,
1877 yaml_char_t *value, size_t length, int allow_breaks)
1899 yaml_char_t *value, size_t length, int allow_breaks)
1879− yaml_string_t string = STRING(value, length);
1901+ yaml_string_t string;
1880 int spaces = 0;
1902 int spaces = 0;
1881 int breaks = 0;
1903 int breaks = 0;
1905+ STRING_ASSIGN(string, value, length);
1883 if (!emitter->whitespace) {
1907 if (!emitter->whitespace) {
1884 if (!PUT(emitter, ' ')) return 0;
1908 if (!PUT(emitter, ' ')) return 0;
@@ -1934,10 +1958,12 @@ static int
1934yaml_emitter_write_single_quoted_scalar(yaml_emitter_t *emitter,
1958yaml_emitter_write_single_quoted_scalar(yaml_emitter_t *emitter,
1935 yaml_char_t *value, size_t length, int allow_breaks)
1959 yaml_char_t *value, size_t length, int allow_breaks)
1937− yaml_string_t string = STRING(value, length);
1961+ yaml_string_t string;
1938 int spaces = 0;
1962 int spaces = 0;
1939 int breaks = 0;
1963 int breaks = 0;
1965+ STRING_ASSIGN(string, value, length);
1941 if (!yaml_emitter_write_indicator(emitter, "'", 1, 0, 0))
1967 if (!yaml_emitter_write_indicator(emitter, "'", 1, 0, 0))
1942 return 0;
1968 return 0;
@@ -1995,9 +2021,11 @@ static int
1995yaml_emitter_write_double_quoted_scalar(yaml_emitter_t *emitter,
2021yaml_emitter_write_double_quoted_scalar(yaml_emitter_t *emitter,
1996 yaml_char_t *value, size_t length, int allow_breaks)
2022 yaml_char_t *value, size_t length, int allow_breaks)
1998− yaml_string_t string = STRING(value, length);
2024+ yaml_string_t string;
1999 int spaces = 0;
2025 int spaces = 0;
2027+ STRING_ASSIGN(string, value, length);
2001 if (!yaml_emitter_write_indicator(emitter, "\"", 1, 0, 0))
2029 if (!yaml_emitter_write_indicator(emitter, "\"", 1, 0, 0))
2002 return 0;
2030 return 0;
@@ -2207,9 +2235,11 @@ static int
2207yaml_emitter_write_literal_scalar(yaml_emitter_t *emitter,
2235yaml_emitter_write_literal_scalar(yaml_emitter_t *emitter,
2208 yaml_char_t *value, size_t length)
2236 yaml_char_t *value, size_t length)
2210− yaml_string_t string = STRING(value, length);
2238+ yaml_string_t string;
2211 int breaks = 1;
2239 int breaks = 1;
2241+ STRING_ASSIGN(string, value, length);
2213 if (!yaml_emitter_write_indicator(emitter, "|", 1, 0, 0))
2243 if (!yaml_emitter_write_indicator(emitter, "|", 1, 0, 0))
2214 return 0;
2244 return 0;
2215 if (!yaml_emitter_write_block_scalar_hints(emitter, string))
2245 if (!yaml_emitter_write_block_scalar_hints(emitter, string))
@@ -2244,10 +2274,12 @@ static int
2244yaml_emitter_write_folded_scalar(yaml_emitter_t *emitter,
2274yaml_emitter_write_folded_scalar(yaml_emitter_t *emitter,
2245 yaml_char_t *value, size_t length)
2275 yaml_char_t *value, size_t length)
2247− yaml_string_t string = STRING(value, length);
2277+ yaml_string_t string;
2248 int breaks = 1;
2278 int breaks = 1;
2249 int leading_spaces = 1;
2279 int leading_spaces = 1;
2281+ STRING_ASSIGN(string, value, length);
2251 if (!yaml_emitter_write_indicator(emitter, ">", 1, 0, 0))
2283 if (!yaml_emitter_write_indicator(emitter, ">", 1, 0, 0))
2252 return 0;
2284 return 0;
2253 if (!yaml_emitter_write_block_scalar_hints(emitter, string))
2285 if (!yaml_emitter_write_block_scalar_hints(emitter, string))