yaml 0.8.5.4 → 0.8.6
raw patch · 10 files changed
+95/−47 lines, 10 files
Files
- libyaml/api.c +5/−1
- libyaml/emitter.c +49/−17
- libyaml/loader.c +3/−1
- libyaml/parser.c +4/−4
- libyaml/reader.c +18/−13
- libyaml/scanner.c +5/−3
- libyaml/writer.c +2/−2
- libyaml/yaml.h +1/−3
- libyaml/yaml_private.h +7/−2
- yaml.cabal +1/−1
libyaml/api.c view
@@ -1367,8 +1367,9 @@ struct { yaml_error_type_t error; } context;- yaml_node_pair_t pair = { key, value }; + yaml_node_pair_t pair;+ assert(document); /* Non-NULL document is required. */ assert(mapping > 0 && document->nodes.start + mapping <= document->nodes.top);@@ -1379,6 +1380,9 @@ /* Valid key id is required. */ assert(value > 0 && document->nodes.start + value <= document->nodes.top); /* Valid value id is required. */++ pair.key = key;+ pair.value = value; if (!PUSH(&context, document->nodes.start[mapping-1].data.mapping.pairs, pair))
libyaml/emitter.c view
@@ -1154,7 +1154,7 @@ break; case YAML_MAPPING_START_EVENT:- if (!yaml_emitter_check_empty_sequence(emitter))+ if (!yaml_emitter_check_empty_mapping(emitter)) return 0; length += emitter->anchor_data.anchor_length + emitter->tag_data.handle_length@@ -1349,11 +1349,16 @@ yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter, yaml_tag_directive_t tag_directive) {- yaml_string_t handle = STRING(tag_directive.handle,- strlen((char *)tag_directive.handle));- yaml_string_t prefix = STRING(tag_directive.prefix,- strlen((char *)tag_directive.prefix));+ yaml_string_t handle;+ yaml_string_t prefix;+ size_t handle_length;+ size_t prefix_length; + handle_length = strlen((char *)tag_directive.handle);+ prefix_length = strlen((char *)tag_directive.prefix);+ STRING_ASSIGN(handle, tag_directive.handle, handle_length);+ STRING_ASSIGN(prefix, tag_directive.prefix, prefix_length);+ if (handle.start == handle.end) { return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty");@@ -1395,7 +1400,11 @@ yaml_emitter_analyze_anchor(yaml_emitter_t *emitter, yaml_char_t *anchor, int alias) {- yaml_string_t string = STRING(anchor, strlen((char *)anchor));+ size_t anchor_length;+ yaml_string_t string;+ + anchor_length = strlen((char *)anchor);+ STRING_ASSIGN(string, anchor, anchor_length); if (string.start == string.end) { return yaml_emitter_set_emitter_error(emitter, alias ?@@ -1427,9 +1436,13 @@ yaml_emitter_analyze_tag(yaml_emitter_t *emitter, yaml_char_t *tag) {- yaml_string_t string = STRING(tag, strlen((char *)tag));+ size_t tag_length;+ yaml_string_t string; yaml_tag_directive_t *tag_directive; + tag_length = strlen((char *)tag);+ STRING_ASSIGN(string, tag, tag_length);+ if (string.start == string.end) { return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty");@@ -1466,7 +1479,7 @@ yaml_emitter_analyze_scalar(yaml_emitter_t *emitter, yaml_char_t *value, size_t length) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string; int block_indicators = 0; int flow_indicators = 0;@@ -1485,6 +1498,8 @@ int previous_space = 0; int previous_break = 0; + STRING_ASSIGN(string, value, length);+ emitter->scalar_data.value = value; emitter->scalar_data.length = length; @@ -1772,8 +1787,12 @@ char *indicator, int need_whitespace, int is_whitespace, int is_indention) {- yaml_string_t string = STRING((yaml_char_t *)indicator, strlen(indicator));+ size_t indicator_length;+ yaml_string_t string; + indicator_length = strlen(indicator);+ STRING_ASSIGN(string, (yaml_char_t *)indicator, indicator_length);+ if (need_whitespace && !emitter->whitespace) { if (!PUT(emitter, ' ')) return 0; }@@ -1793,7 +1812,8 @@ yaml_emitter_write_anchor(yaml_emitter_t *emitter, yaml_char_t *value, size_t length) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string;+ STRING_ASSIGN(string, value, length); while (string.pointer != string.end) { if (!WRITE(emitter, string)) return 0;@@ -1809,7 +1829,8 @@ yaml_emitter_write_tag_handle(yaml_emitter_t *emitter, yaml_char_t *value, size_t length) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string;+ STRING_ASSIGN(string, value, length); if (!emitter->whitespace) { if (!PUT(emitter, ' ')) return 0;@@ -1830,7 +1851,8 @@ yaml_char_t *value, size_t length, int need_whitespace) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string;+ STRING_ASSIGN(string, value, length); if (need_whitespace && !emitter->whitespace) { if (!PUT(emitter, ' ')) return 0;@@ -1876,10 +1898,12 @@ yaml_emitter_write_plain_scalar(yaml_emitter_t *emitter, yaml_char_t *value, size_t length, int allow_breaks) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string; int spaces = 0; int breaks = 0; + STRING_ASSIGN(string, value, length);+ if (!emitter->whitespace) { if (!PUT(emitter, ' ')) return 0; }@@ -1934,10 +1958,12 @@ yaml_emitter_write_single_quoted_scalar(yaml_emitter_t *emitter, yaml_char_t *value, size_t length, int allow_breaks) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string; int spaces = 0; int breaks = 0; + STRING_ASSIGN(string, value, length);+ if (!yaml_emitter_write_indicator(emitter, "'", 1, 0, 0)) return 0; @@ -1995,9 +2021,11 @@ yaml_emitter_write_double_quoted_scalar(yaml_emitter_t *emitter, yaml_char_t *value, size_t length, int allow_breaks) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string; int spaces = 0; + STRING_ASSIGN(string, value, length);+ if (!yaml_emitter_write_indicator(emitter, "\"", 1, 0, 0)) return 0; @@ -2207,9 +2235,11 @@ yaml_emitter_write_literal_scalar(yaml_emitter_t *emitter, yaml_char_t *value, size_t length) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string; int breaks = 1; + STRING_ASSIGN(string, value, length);+ if (!yaml_emitter_write_indicator(emitter, "|", 1, 0, 0)) return 0; if (!yaml_emitter_write_block_scalar_hints(emitter, string))@@ -2244,9 +2274,11 @@ yaml_emitter_write_folded_scalar(yaml_emitter_t *emitter, yaml_char_t *value, size_t length) {- yaml_string_t string = STRING(value, length);+ yaml_string_t string; int breaks = 1; int leading_spaces = 1;++ STRING_ASSIGN(string, value, length); if (!yaml_emitter_write_indicator(emitter, ">", 1, 0, 0)) return 0;
libyaml/loader.c view
@@ -225,11 +225,13 @@ yaml_parser_register_anchor(yaml_parser_t *parser, int index, yaml_char_t *anchor) {- yaml_alias_data_t data = { anchor, index, { 0, 0, 0 } };+ yaml_alias_data_t data; yaml_alias_data_t *alias_data; if (!anchor) return 1; + data.anchor = anchor;+ data.index = index; data.mark = parser->document->nodes.start[index-1].start_mark; for (alias_data = parser->aliases.start;
libyaml/parser.c view
@@ -1280,10 +1280,10 @@ } else if (token->type == YAML_TAG_DIRECTIVE_TOKEN) {- yaml_tag_directive_t value = {- token->data.tag_directive.handle,- token->data.tag_directive.prefix- };+ yaml_tag_directive_t value;+ value.handle = token->data.tag_directive.handle;+ value.prefix = token->data.tag_directive.prefix;+ if (!yaml_parser_append_tag_directive(parser, value, 0, token->start_mark)) goto error;
libyaml/reader.c view
@@ -120,7 +120,7 @@ if (!parser->read_handler(parser->read_handler_data, parser->raw_buffer.last, parser->raw_buffer.end - parser->raw_buffer.last, &size_read)) {- return yaml_parser_set_reader_error(parser, "Input error",+ return yaml_parser_set_reader_error(parser, "input error", parser->offset, -1); } parser->raw_buffer.last += size_read;@@ -141,6 +141,8 @@ YAML_DECLARE(int) yaml_parser_update_buffer(yaml_parser_t *parser, size_t length) {+ int first = 1;+ assert(parser->read_handler); /* Read handler must be set. */ /* If the EOF flag is set and the raw buffer is empty, do nothing. */@@ -178,9 +180,12 @@ while (parser->unread < length) {- /* Fill the raw buffer. */+ /* Fill the raw buffer if necessary. */ - if (!yaml_parser_update_raw_buffer(parser)) return 0;+ if (!first || parser->raw_buffer.pointer == parser->raw_buffer.last) {+ if (!yaml_parser_update_raw_buffer(parser)) return 0;+ }+ first = 0; /* Decode the raw buffer. */ @@ -232,7 +237,7 @@ if (!width) return yaml_parser_set_reader_error(parser,- "Invalid leading UTF-8 octet",+ "invalid leading UTF-8 octet", parser->offset, octet); /* Check if the raw buffer contains an incomplete character. */@@ -240,7 +245,7 @@ if (width > raw_unread) { if (parser->eof) { return yaml_parser_set_reader_error(parser,- "Incomplete UTF-8 octet sequence",+ "incomplete UTF-8 octet sequence", parser->offset, -1); } incomplete = 1;@@ -264,7 +269,7 @@ if ((octet & 0xC0) != 0x80) return yaml_parser_set_reader_error(parser,- "Invalid trailing UTF-8 octet",+ "invalid trailing UTF-8 octet", parser->offset+k, octet); /* Decode the octet. */@@ -279,14 +284,14 @@ (width == 3 && value >= 0x800) || (width == 4 && value >= 0x10000))) return yaml_parser_set_reader_error(parser,- "Invalid length of a UTF-8 sequence",+ "invalid length of a UTF-8 sequence", parser->offset, -1); /* Check the range of the value. */ if ((value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF) return yaml_parser_set_reader_error(parser,- "Invalid Unicode character",+ "invalid Unicode character", parser->offset, value); break;@@ -328,7 +333,7 @@ if (raw_unread < 2) { if (parser->eof) { return yaml_parser_set_reader_error(parser,- "Incomplete UTF-16 character",+ "incomplete UTF-16 character", parser->offset, -1); } incomplete = 1;@@ -344,7 +349,7 @@ if ((value & 0xFC00) == 0xDC00) return yaml_parser_set_reader_error(parser,- "Unexpected low surrogate area",+ "unexpected low surrogate area", parser->offset, value); /* Check for a high surrogate area. */@@ -358,7 +363,7 @@ if (raw_unread < 4) { if (parser->eof) { return yaml_parser_set_reader_error(parser,- "Incomplete UTF-16 surrogate pair",+ "incomplete UTF-16 surrogate pair", parser->offset, -1); } incomplete = 1;@@ -374,7 +379,7 @@ if ((value2 & 0xFC00) != 0xDC00) return yaml_parser_set_reader_error(parser,- "Expected low surrogate area",+ "expected low surrogate area", parser->offset+2, value2); /* Generate the value of the surrogate pair. */@@ -409,7 +414,7 @@ || (value >= 0xE000 && value <= 0xFFFD) || (value >= 0x10000 && value <= 0x10FFFF))) return yaml_parser_set_reader_error(parser,- "Control characters are not allowed",+ "control characters are not allowed", parser->offset, value); /* Move the raw pointers. */
libyaml/scanner.c view
@@ -1118,9 +1118,11 @@ if (parser->simple_key_allowed) {- yaml_simple_key_t simple_key = { 1, required,- parser->tokens_parsed + parser->tokens.tail - parser->tokens.head,- { 0, 0, 0 } };+ yaml_simple_key_t simple_key;+ simple_key.possible = 1;+ simple_key.required = required;+ simple_key.token_number = + parser->tokens_parsed + (parser->tokens.tail - parser->tokens.head); simple_key.mark = parser->mark; if (!yaml_parser_remove_simple_key(parser)) return 0;
libyaml/writer.c view
@@ -58,7 +58,7 @@ return 1; } else {- return yaml_emitter_set_writer_error(emitter, "Write error");+ return yaml_emitter_set_writer_error(emitter, "write error"); } } @@ -135,7 +135,7 @@ return 1; } else {- return yaml_emitter_set_writer_error(emitter, "Write error");+ return yaml_emitter_set_writer_error(emitter, "write error"); } }
libyaml/yaml.h view
@@ -26,9 +26,7 @@ /** The public API declaration. */ -#define YAML_DECLARE_STATIC--#ifdef WIN32+#ifdef _WIN32 # if defined(YAML_DECLARE_STATIC) # define YAML_DECLARE(type) type # elif defined(YAML_DECLARE_EXPORT)
libyaml/yaml_private.h view
@@ -113,6 +113,11 @@ #define STRING(string,length) { (string), (string)+(length), (string) } +#define STRING_ASSIGN(value,string,length) \+ ((value).start = (string), \+ (value).end = (string)+(length), \+ (value).pointer = (string))+ #define STRING_INIT(context,string,size) \ (((string).start = yaml_malloc(size)) ? \ ((string).pointer = (string).start, \@@ -633,7 +638,7 @@ (node).data.mapping.pairs.top = (node_pairs_start), \ (node).data.mapping.style = (node_style)) -#define YAML_VERSION_STRING "0.1.2"+#define YAML_VERSION_STRING "0.1.4" #define YAML_VERSION_MAJOR 0 #define YAML_VERSION_MINOR 1-#define YAML_VERSION_PATCH 2+#define YAML_VERSION_PATCH 4
yaml.cabal view
@@ -1,5 +1,5 @@ name: yaml-version: 0.8.5.4+version: 0.8.6 license: BSD3 license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>, Anton Ageev <antage@gmail.com>,Kirill Simonov