Changeset 185 for libyaml/trunk/src/api.c
- Timestamp:
- 06/07/06 16:30:22 (7 years ago)
- File:
-
- 1 edited
-
libyaml/trunk/src/api.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libyaml/trunk/src/api.c
r183 r185 50 50 51 51 parser = yaml_malloc(sizeof(yaml_parser_t)); 52 if (!parser) return NULL;52 if (!parser) goto error; 53 53 54 54 memset(parser, 0, sizeof(yaml_parser_t)); … … 57 57 58 58 parser->raw_buffer = yaml_malloc(YAML_RAW_BUFFER_SIZE); 59 if (!parser->raw_buffer) { 60 yaml_free(parser); 61 return NULL; 62 } 59 if (!parser->raw_buffer) goto error; 60 memset(parser->raw_buffer, 0, YAML_RAW_BUFFER_SIZE); 61 63 62 parser->raw_pointer = parser->raw_buffer; 64 63 parser->raw_unread = 0; … … 67 66 68 67 parser->buffer = yaml_malloc(YAML_BUFFER_SIZE); 69 if (!parser->buffer) { 70 yaml_free(parser->raw_buffer); 71 yaml_free(parser); 72 return NULL; 73 } 68 if (!parser->buffer) goto error; 69 memset(parser->buffer, 0, YAML_BUFFER_SIZE); 70 74 71 parser->buffer_end = parser->buffer; 75 72 parser->pointer = parser->buffer; 76 73 parser->unread = 0; 77 74 75 /* Allocate the tokens queue. */ 76 77 parser->tokens = yaml_malloc(YAML_DEFAULT_SIZE*sizeof(yaml_token_t *)); 78 if (!parser->tokens) goto error; 79 memset(parser->tokens, 0, YAML_DEFAULT_SIZE*sizeof(yaml_token_t *)); 80 81 parser->tokens_size = YAML_DEFAULT_SIZE; 82 parser->tokens_head = 0; 83 parser->tokens_tail = 0; 84 parser->tokens_parsed = 0; 85 86 /* Allocate the indents stack. */ 87 88 parser->indents = yaml_malloc(YAML_DEFAULT_SIZE*sizeof(int)); 89 if (!parser->indents) goto error; 90 memset(parser->indents, 0, YAML_DEFAULT_SIZE*sizeof(int)); 91 92 parser->indents_size = YAML_DEFAULT_SIZE; 93 parser->indents_length = 0; 94 95 /* Allocate the stack of potential simple keys. */ 96 97 parser->simple_keys = yaml_malloc(YAML_DEFAULT_SIZE*sizeof(yaml_simple_key_t *)); 98 if (!parser->simple_keys) goto error; 99 memset(parser->simple_keys, 0, YAML_DEFAULT_SIZE*sizeof(yaml_simple_key_t *)); 100 101 parser->simple_keys_size = YAML_DEFAULT_SIZE; 102 103 /* Done. */ 104 78 105 return parser; 106 107 /* On error, free allocated buffers. */ 108 109 error: 110 111 if (!parser) return NULL; 112 113 yaml_free(parser->simple_keys); 114 yaml_free(parser->indents); 115 yaml_free(parser->tokens); 116 yaml_free(parser->buffer); 117 yaml_free(parser->raw_buffer); 118 119 yaml_free(parser); 120 121 return NULL; 79 122 } 80 123 … … 88 131 assert(parser); /* Non-NULL parser object expected. */ 89 132 133 yaml_free(parser->simple_keys); 134 yaml_free(parser->indents); 135 yaml_free(parser->tokens); 90 136 yaml_free(parser->buffer); 91 137 yaml_free(parser->raw_buffer);
Note: See TracChangeset
for help on using the changeset viewer.
