psych 3.0.3.pre3 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15245064ae6fa440b994a43b67f82bf1186c593987cf49e5fcb96e7a88ff5778
4
- data.tar.gz: 808e0d7885a257bd4611176d914f178c55f77a574d6048ef768bca14caf86908
3
+ metadata.gz: bb86b57322de81bdd56451df223fe27f61a67b4f85caeb0d28fe9b4cda6cd5ae
4
+ data.tar.gz: 762106ad2df9213bf93e777513d23df05c9bd25fb0dd511c8275172e5eeef118
5
5
  SHA512:
6
- metadata.gz: d14e0b40bed89b4b4d87691b18d5bfb2c63e315cba660ab43b8088d1b42ea0cb83bd11d9d9f3a2713c2515d4d6c49bc2381a00aca317b3eb14167f38bdbfb4e2
7
- data.tar.gz: 3af43392542f29dbf87d8e37a79fe38bc2e9d02a7952e387f90fc82c909a81a5401b0612d522e0f8b48cc29b463925a2a42d70e111957a43e5fd5e2d8ba741c7
6
+ metadata.gz: fa022cc3afcc02867d9528ac55f9b165011e5555ed37a24eed3116b211bb72247bb5afa73136f42232d649d7c6cab3c7af44e44558719d841edb4ad5f3d6d611
7
+ data.tar.gz: d2fbc5ff9683197cbc76abbee9fbdec01622fb70f262c72567342f111549ad3686ca1b8e4839705e43c63d64305aa62bb464819a118d83cf3b050ffb652c8ef7
data/Gemfile CHANGED
@@ -1,3 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ group :development do
6
+ gem 'rake-compiler', ">= 0.4.1"
7
+ gem 'minitest', "~> 5.0"
8
+ gem 'ruby-maven', :platforms => :jruby
9
+ end
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2009 Aaron Patterson, et al.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,22 +1,19 @@
1
1
  # Psych
2
2
 
3
- [![Build Status](https://travis-ci.org/ruby/psych.svg?branch=master)](https://travis-ci.org/ruby/psych)
4
- [![Build status](https://ci.appveyor.com/api/projects/status/2t6x109xfmbx209k/branch/master?svg=true)](https://ci.appveyor.com/project/ruby/psych/branch/master)
5
-
6
3
  * https://github.com/ruby/psych
7
4
 
8
5
  ## Description
9
6
 
10
7
  Psych is a YAML parser and emitter. Psych leverages
11
- [libyaml](http://pyyaml.org/wiki/LibYAML) for its YAML parsing and emitting
8
+ [libyaml](https://pyyaml.org/wiki/LibYAML) for its YAML parsing and emitting
12
9
  capabilities. In addition to wrapping libyaml, Psych also knows how to
13
10
  serialize and de-serialize most Ruby objects to and from the YAML format.
14
11
 
15
12
  ## Examples
16
13
 
17
14
  ```ruby
18
- # Load YAML in to a Ruby object
19
- Psych.load('--- foo') # => 'foo'
15
+ # Safely load YAML in to a Ruby object
16
+ Psych.safe_load('--- foo') # => 'foo'
20
17
 
21
18
  # Emit YAML from a Ruby object
22
19
  Psych.dump("foo") # => "--- foo\n...\n"
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ if RUBY_PLATFORM =~ /java/
20
20
  # and tell maven via system properties the snakeyaml version
21
21
  # this is basically the same as running from the commandline:
22
22
  # rmvn dependency:build-classpath -Dsnakeyaml.version='use version from Psych::DEFAULT_SNAKEYAML_VERSION here'
23
- Maven::Ruby::Maven.new.exec('dependency:build-classpath', "-Dsnakeyaml.version=1.23", '-Dverbose=true')
23
+ Maven::Ruby::Maven.new.exec('dependency:build-classpath', "-Dsnakeyaml.version=#{Psych::DEFAULT_SNAKEYAML_VERSION}", '-Dverbose=true')
24
24
  ext.source_version = '1.7'
25
25
  ext.target_version = '1.7'
26
26
  ext.classpath = File.read('pkg/classpath')
@@ -28,21 +28,7 @@ if RUBY_PLATFORM =~ /java/
28
28
  end
29
29
  else
30
30
  require 'rake/extensiontask'
31
- spec = eval File.read("psych.gemspec")
32
- Rake::ExtensionTask.new("psych", spec) do |ext|
33
- ext.lib_dir = File.join(*['lib', ENV['FAT_DIR']].compact)
34
- ext.cross_compile = true
35
- ext.cross_platform = %w[x86-mingw32 x64-mingw32]
36
- ext.cross_compiling do |s|
37
- s.files.concat ["lib/2.2/psych.so", "lib/2.3/psych.so", "lib/2.4/psych.so"]
38
- end
39
- end
40
- end
41
-
42
- desc "Compile binaries for mingw platform using rake-compiler-dock"
43
- task 'build:mingw' do
44
- require 'rake_compiler_dock'
45
- RakeCompilerDock.sh "bundle && rake cross native gem RUBY_CC_VERSION=2.2.2:2.3.0:2.4.0"
31
+ Rake::ExtensionTask.new("psych")
46
32
  end
47
33
 
48
34
  task :default => [:compile, :test]
@@ -1,3 +1,5 @@
1
+ $(OBJS): $(YAML_H)
2
+
1
3
  $(OBJS): $(HDRS) $(ruby_headers) \
2
4
  $(hdrdir)/ruby/encoding.h \
3
5
  $(hdrdir)/ruby/oniguruma.h
@@ -13,8 +13,10 @@ if enable_config("bundled-libyaml", false) || !(find_header('yaml.h') && find_li
13
13
  $VPATH << "$(srcdir)/yaml"
14
14
  $INCFLAGS << " -I$(srcdir)/yaml"
15
15
 
16
- $srcs = Dir.glob("#{$srcdir}/{,yaml/}*.c").map {|n| File.basename(n)}
16
+ $srcs = Dir.glob("#{$srcdir}/{,yaml/}*.c").map {|n| File.basename(n)}.sort
17
17
 
18
+ header = 'yaml/yaml.h'
19
+ header = "{$(VPATH)}#{header}" if $nmake
18
20
  if have_macro("_WIN32")
19
21
  $CPPFLAGS << " -DYAML_DECLARE_STATIC -DHAVE_CONFIG_H"
20
22
  end
@@ -34,6 +36,8 @@ if enable_config("bundled-libyaml", false) || !(find_header('yaml.h') && find_li
34
36
  have_header 'config.h'
35
37
  end
36
38
 
37
- create_makefile 'psych'
39
+ create_makefile 'psych' do |mk|
40
+ mk << "YAML_H = #{header}".strip << "\n"
41
+ end
38
42
 
39
43
  # :startdoc:
@@ -11,9 +11,9 @@ static VALUE libyaml_version(VALUE module)
11
11
 
12
12
  yaml_get_version(&major, &minor, &patch);
13
13
 
14
- list[0] = INT2NUM((long)major);
15
- list[1] = INT2NUM((long)minor);
16
- list[2] = INT2NUM((long)patch);
14
+ list[0] = INT2NUM(major);
15
+ list[1] = INT2NUM(minor);
16
+ list[2] = INT2NUM(patch);
17
17
 
18
18
  return rb_ary_new4((long)3, list);
19
19
  }
@@ -22,6 +22,9 @@ VALUE mPsych;
22
22
 
23
23
  void Init_psych(void)
24
24
  {
25
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
26
+ RB_EXT_RACTOR_SAFE(true);
27
+ #endif
25
28
  mPsych = rb_define_module("Psych");
26
29
 
27
30
  rb_define_singleton_method(mPsych, "libyaml_version", libyaml_version, 0);
@@ -1,7 +1,6 @@
1
1
  #include <psych.h>
2
2
 
3
3
  VALUE cPsychParser;
4
- VALUE ePsychSyntaxError;
5
4
 
6
5
  static ID id_read;
7
6
  static ID id_path;
@@ -28,7 +27,7 @@ static ID id_event_location;
28
27
  static int io_reader(void * data, unsigned char *buf, size_t size, size_t *read)
29
28
  {
30
29
  VALUE io = (VALUE)data;
31
- VALUE string = rb_funcall(io, id_read, 1, INT2NUM(size));
30
+ VALUE string = rb_funcall(io, id_read, 1, SIZET2NUM(size));
32
31
 
33
32
  *read = 0;
34
33
 
@@ -81,15 +80,18 @@ static VALUE allocate(VALUE klass)
81
80
  static VALUE make_exception(yaml_parser_t * parser, VALUE path)
82
81
  {
83
82
  size_t line, column;
83
+ VALUE ePsychSyntaxError;
84
84
 
85
85
  line = parser->context_mark.line + 1;
86
86
  column = parser->context_mark.column + 1;
87
87
 
88
+ ePsychSyntaxError = rb_const_get(mPsych, rb_intern("SyntaxError"));
89
+
88
90
  return rb_funcall(ePsychSyntaxError, rb_intern("new"), 6,
89
91
  path,
90
- INT2NUM(line),
91
- INT2NUM(column),
92
- INT2NUM(parser->problem_offset),
92
+ SIZET2NUM(line),
93
+ SIZET2NUM(column),
94
+ SIZET2NUM(parser->problem_offset),
93
95
  parser->problem ? rb_usascii_str_new2(parser->problem) : Qnil,
94
96
  parser->context ? rb_usascii_str_new2(parser->context) : Qnil);
95
97
  }
@@ -254,7 +256,6 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
254
256
  yaml_parser_t * parser;
255
257
  yaml_event_t event;
256
258
  int done = 0;
257
- int tainted = 0;
258
259
  int state = 0;
259
260
  int parser_encoding = YAML_ANY_ENCODING;
260
261
  int encoding = rb_utf8_encindex();
@@ -273,13 +274,10 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
273
274
  yaml_parser_delete(parser);
274
275
  yaml_parser_initialize(parser);
275
276
 
276
- if (OBJ_TAINTED(yaml)) tainted = 1;
277
-
278
277
  if (rb_respond_to(yaml, id_read)) {
279
278
  yaml = transcode_io(yaml, &parser_encoding);
280
279
  yaml_parser_set_encoding(parser, parser_encoding);
281
280
  yaml_parser_set_input(parser, io_reader, (void *)yaml);
282
- if (RTEST(rb_obj_is_kind_of(yaml, rb_cIO))) tainted = 1;
283
281
  } else {
284
282
  StringValue(yaml);
285
283
  yaml = transcode_string(yaml, &parser_encoding);
@@ -305,10 +303,10 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
305
303
  rb_exc_raise(exception);
306
304
  }
307
305
 
308
- start_line = INT2NUM((long)event.start_mark.line);
309
- start_column = INT2NUM((long)event.start_mark.column);
310
- end_line = INT2NUM((long)event.end_mark.line);
311
- end_column = INT2NUM((long)event.end_mark.column);
306
+ start_line = SIZET2NUM(event.start_mark.line);
307
+ start_column = SIZET2NUM(event.start_mark.column);
308
+ end_line = SIZET2NUM(event.end_mark.line);
309
+ end_column = SIZET2NUM(event.end_mark.column);
312
310
 
313
311
  event_args[0] = handler;
314
312
  event_args[1] = start_line;
@@ -323,7 +321,7 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
323
321
  VALUE args[2];
324
322
 
325
323
  args[0] = handler;
326
- args[1] = INT2NUM((long)event.data.stream_start.encoding);
324
+ args[1] = INT2NUM(event.data.stream_start.encoding);
327
325
  rb_protect(protected_start_stream, (VALUE)args, &state);
328
326
  }
329
327
  break;
@@ -336,8 +334,8 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
336
334
  VALUE version = event.data.document_start.version_directive ?
337
335
  rb_ary_new3(
338
336
  (long)2,
339
- INT2NUM((long)event.data.document_start.version_directive->major),
340
- INT2NUM((long)event.data.document_start.version_directive->minor)
337
+ INT2NUM(event.data.document_start.version_directive->major),
338
+ INT2NUM(event.data.document_start.version_directive->minor)
341
339
  ) : rb_ary_new();
342
340
 
343
341
  if(event.data.document_start.tag_directives.start) {
@@ -350,13 +348,11 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
350
348
  VALUE prefix = Qnil;
351
349
  if(start->handle) {
352
350
  handle = rb_str_new2((const char *)start->handle);
353
- if (tainted) OBJ_TAINT(handle);
354
351
  PSYCH_TRANSCODE(handle, encoding, internal_enc);
355
352
  }
356
353
 
357
354
  if(start->prefix) {
358
355
  prefix = rb_str_new2((const char *)start->prefix);
359
- if (tainted) OBJ_TAINT(prefix);
360
356
  PSYCH_TRANSCODE(prefix, encoding, internal_enc);
361
357
  }
362
358
 
@@ -385,7 +381,6 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
385
381
  VALUE alias = Qnil;
386
382
  if(event.data.alias.anchor) {
387
383
  alias = rb_str_new2((const char *)event.data.alias.anchor);
388
- if (tainted) OBJ_TAINT(alias);
389
384
  PSYCH_TRANSCODE(alias, encoding, internal_enc);
390
385
  }
391
386
 
@@ -404,19 +399,16 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
404
399
  (const char *)event.data.scalar.value,
405
400
  (long)event.data.scalar.length
406
401
  );
407
- if (tainted) OBJ_TAINT(val);
408
402
 
409
403
  PSYCH_TRANSCODE(val, encoding, internal_enc);
410
404
 
411
405
  if(event.data.scalar.anchor) {
412
406
  anchor = rb_str_new2((const char *)event.data.scalar.anchor);
413
- if (tainted) OBJ_TAINT(anchor);
414
407
  PSYCH_TRANSCODE(anchor, encoding, internal_enc);
415
408
  }
416
409
 
417
410
  if(event.data.scalar.tag) {
418
411
  tag = rb_str_new2((const char *)event.data.scalar.tag);
419
- if (tainted) OBJ_TAINT(tag);
420
412
  PSYCH_TRANSCODE(tag, encoding, internal_enc);
421
413
  }
422
414
 
@@ -426,7 +418,7 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
426
418
  quoted_implicit =
427
419
  event.data.scalar.quoted_implicit == 0 ? Qfalse : Qtrue;
428
420
 
429
- style = INT2NUM((long)event.data.scalar.style);
421
+ style = INT2NUM(event.data.scalar.style);
430
422
 
431
423
  args[0] = handler;
432
424
  args[1] = val;
@@ -446,21 +438,19 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
446
438
  VALUE implicit, style;
447
439
  if(event.data.sequence_start.anchor) {
448
440
  anchor = rb_str_new2((const char *)event.data.sequence_start.anchor);
449
- if (tainted) OBJ_TAINT(anchor);
450
441
  PSYCH_TRANSCODE(anchor, encoding, internal_enc);
451
442
  }
452
443
 
453
444
  tag = Qnil;
454
445
  if(event.data.sequence_start.tag) {
455
446
  tag = rb_str_new2((const char *)event.data.sequence_start.tag);
456
- if (tainted) OBJ_TAINT(tag);
457
447
  PSYCH_TRANSCODE(tag, encoding, internal_enc);
458
448
  }
459
449
 
460
450
  implicit =
461
451
  event.data.sequence_start.implicit == 0 ? Qfalse : Qtrue;
462
452
 
463
- style = INT2NUM((long)event.data.sequence_start.style);
453
+ style = INT2NUM(event.data.sequence_start.style);
464
454
 
465
455
  args[0] = handler;
466
456
  args[1] = anchor;
@@ -482,20 +472,18 @@ static VALUE parse(int argc, VALUE *argv, VALUE self)
482
472
  VALUE implicit, style;
483
473
  if(event.data.mapping_start.anchor) {
484
474
  anchor = rb_str_new2((const char *)event.data.mapping_start.anchor);
485
- if (tainted) OBJ_TAINT(anchor);
486
475
  PSYCH_TRANSCODE(anchor, encoding, internal_enc);
487
476
  }
488
477
 
489
478
  if(event.data.mapping_start.tag) {
490
479
  tag = rb_str_new2((const char *)event.data.mapping_start.tag);
491
- if (tainted) OBJ_TAINT(tag);
492
480
  PSYCH_TRANSCODE(tag, encoding, internal_enc);
493
481
  }
494
482
 
495
483
  implicit =
496
484
  event.data.mapping_start.implicit == 0 ? Qfalse : Qtrue;
497
485
 
498
- style = INT2NUM((long)event.data.mapping_start.style);
486
+ style = INT2NUM(event.data.mapping_start.style);
499
487
 
500
488
  args[0] = handler;
501
489
  args[1] = anchor;
@@ -539,9 +527,9 @@ static VALUE mark(VALUE self)
539
527
 
540
528
  TypedData_Get_Struct(self, yaml_parser_t, &psych_parser_type, parser);
541
529
  mark_klass = rb_const_get_at(cPsychParser, rb_intern("Mark"));
542
- args[0] = INT2NUM(parser->mark.index);
543
- args[1] = INT2NUM(parser->mark.line);
544
- args[2] = INT2NUM(parser->mark.column);
530
+ args[0] = SIZET2NUM(parser->mark.index);
531
+ args[1] = SIZET2NUM(parser->mark.line);
532
+ args[2] = SIZET2NUM(parser->mark.column);
545
533
 
546
534
  return rb_class_new_instance(3, args, mark_klass);
547
535
  }
@@ -569,7 +557,6 @@ void Init_psych_parser(void)
569
557
  rb_define_const(cPsychParser, "UTF16BE", INT2NUM(YAML_UTF16BE_ENCODING));
570
558
 
571
559
  rb_require("psych/syntax_error");
572
- ePsychSyntaxError = rb_const_get(mPsych, rb_intern("SyntaxError"));
573
560
 
574
561
  rb_define_method(cPsychParser, "parse", parse, -1);
575
562
  rb_define_method(cPsychParser, "mark", mark, 0);
@@ -2,23 +2,11 @@
2
2
 
3
3
  VALUE cPsychVisitorsYamlTree;
4
4
 
5
- /*
6
- * call-seq: private_iv_get(target, prop)
7
- *
8
- * Get the private instance variable +prop+ from +target+
9
- */
10
- static VALUE private_iv_get(VALUE self, VALUE target, VALUE prop)
11
- {
12
- return rb_attr_get(target, rb_intern(StringValueCStr(prop)));
13
- }
14
-
15
5
  void Init_psych_yaml_tree(void)
16
6
  {
17
7
  VALUE psych = rb_define_module("Psych");
18
8
  VALUE visitors = rb_define_module_under(psych, "Visitors");
19
9
  VALUE visitor = rb_define_class_under(visitors, "Visitor", rb_cObject);
20
10
  cPsychVisitorsYamlTree = rb_define_class_under(visitors, "YAMLTree", visitor);
21
-
22
- rb_define_private_method(cPsychVisitorsYamlTree, "private_iv_get", private_iv_get, 2);
23
11
  }
24
12
  /* vim: set noet sws=4 sw=4: */
@@ -74,7 +74,7 @@ YAML_DECLARE(int)
74
74
  yaml_string_extend(yaml_char_t **start,
75
75
  yaml_char_t **pointer, yaml_char_t **end)
76
76
  {
77
- yaml_char_t *new_start = yaml_realloc(*start, (*end - *start)*2);
77
+ yaml_char_t *new_start = (yaml_char_t *)yaml_realloc((void*)*start, (*end - *start)*2);
78
78
 
79
79
  if (!new_start) return 0;
80
80
 
@@ -94,8 +94,9 @@ yaml_string_extend(yaml_char_t **start,
94
94
  YAML_DECLARE(int)
95
95
  yaml_string_join(
96
96
  yaml_char_t **a_start, yaml_char_t **a_pointer, yaml_char_t **a_end,
97
- yaml_char_t **b_start, yaml_char_t **b_pointer, yaml_char_t **b_end)
97
+ yaml_char_t **b_start, yaml_char_t **b_pointer, SHIM(yaml_char_t **b_end))
98
98
  {
99
+ UNUSED_PARAM(b_end)
99
100
  if (*b_start == *b_pointer)
100
101
  return 1;
101
102
 
@@ -117,7 +118,12 @@ yaml_string_join(
117
118
  YAML_DECLARE(int)
118
119
  yaml_stack_extend(void **start, void **top, void **end)
119
120
  {
120
- void *new_start = yaml_realloc(*start, ((char *)*end - (char *)*start)*2);
121
+ void *new_start;
122
+
123
+ if ((char *)*end - (char *)*start >= INT_MAX / 2)
124
+ return 0;
125
+
126
+ new_start = yaml_realloc(*start, ((char *)*end - (char *)*start)*2);
121
127
 
122
128
  if (!new_start) return 0;
123
129
 
@@ -177,17 +183,17 @@ yaml_parser_initialize(yaml_parser_t *parser)
177
183
  goto error;
178
184
  if (!BUFFER_INIT(parser, parser->buffer, INPUT_BUFFER_SIZE))
179
185
  goto error;
180
- if (!QUEUE_INIT(parser, parser->tokens, INITIAL_QUEUE_SIZE))
186
+ if (!QUEUE_INIT(parser, parser->tokens, INITIAL_QUEUE_SIZE, yaml_token_t*))
181
187
  goto error;
182
- if (!STACK_INIT(parser, parser->indents, INITIAL_STACK_SIZE))
188
+ if (!STACK_INIT(parser, parser->indents, int*))
183
189
  goto error;
184
- if (!STACK_INIT(parser, parser->simple_keys, INITIAL_STACK_SIZE))
190
+ if (!STACK_INIT(parser, parser->simple_keys, yaml_simple_key_t*))
185
191
  goto error;
186
- if (!STACK_INIT(parser, parser->states, INITIAL_STACK_SIZE))
192
+ if (!STACK_INIT(parser, parser->states, yaml_parser_state_t*))
187
193
  goto error;
188
- if (!STACK_INIT(parser, parser->marks, INITIAL_STACK_SIZE))
194
+ if (!STACK_INIT(parser, parser->marks, yaml_mark_t*))
189
195
  goto error;
190
- if (!STACK_INIT(parser, parser->tag_directives, INITIAL_STACK_SIZE))
196
+ if (!STACK_INIT(parser, parser->tag_directives, yaml_tag_directive_t*))
191
197
  goto error;
192
198
 
193
199
  return 1;
@@ -243,7 +249,7 @@ static int
243
249
  yaml_string_read_handler(void *data, unsigned char *buffer, size_t size,
244
250
  size_t *size_read)
245
251
  {
246
- yaml_parser_t *parser = data;
252
+ yaml_parser_t *parser = (yaml_parser_t *)data;
247
253
 
248
254
  if (parser->input.string.current == parser->input.string.end) {
249
255
  *size_read = 0;
@@ -269,7 +275,7 @@ static int
269
275
  yaml_file_read_handler(void *data, unsigned char *buffer, size_t size,
270
276
  size_t *size_read)
271
277
  {
272
- yaml_parser_t *parser = data;
278
+ yaml_parser_t *parser = (yaml_parser_t *)data;
273
279
 
274
280
  *size_read = fread(buffer, 1, size, parser->input.file);
275
281
  return !ferror(parser->input.file);
@@ -355,13 +361,13 @@ yaml_emitter_initialize(yaml_emitter_t *emitter)
355
361
  goto error;
356
362
  if (!BUFFER_INIT(emitter, emitter->raw_buffer, OUTPUT_RAW_BUFFER_SIZE))
357
363
  goto error;
358
- if (!STACK_INIT(emitter, emitter->states, INITIAL_STACK_SIZE))
364
+ if (!STACK_INIT(emitter, emitter->states, yaml_emitter_state_t*))
359
365
  goto error;
360
- if (!QUEUE_INIT(emitter, emitter->events, INITIAL_QUEUE_SIZE))
366
+ if (!QUEUE_INIT(emitter, emitter->events, INITIAL_QUEUE_SIZE, yaml_event_t*))
361
367
  goto error;
362
- if (!STACK_INIT(emitter, emitter->indents, INITIAL_STACK_SIZE))
368
+ if (!STACK_INIT(emitter, emitter->indents, int*))
363
369
  goto error;
364
- if (!STACK_INIT(emitter, emitter->tag_directives, INITIAL_STACK_SIZE))
370
+ if (!STACK_INIT(emitter, emitter->tag_directives, yaml_tag_directive_t*))
365
371
  goto error;
366
372
 
367
373
  return 1;
@@ -413,7 +419,7 @@ yaml_emitter_delete(yaml_emitter_t *emitter)
413
419
  static int
414
420
  yaml_string_write_handler(void *data, unsigned char *buffer, size_t size)
415
421
  {
416
- yaml_emitter_t *emitter = data;
422
+ yaml_emitter_t *emitter = (yaml_emitter_t *)data;
417
423
 
418
424
  if (emitter->output.string.size - *emitter->output.string.size_written
419
425
  < size) {
@@ -439,7 +445,7 @@ yaml_string_write_handler(void *data, unsigned char *buffer, size_t size)
439
445
  static int
440
446
  yaml_file_write_handler(void *data, unsigned char *buffer, size_t size)
441
447
  {
442
- yaml_emitter_t *emitter = data;
448
+ yaml_emitter_t *emitter = (yaml_emitter_t *)data;
443
449
 
444
450
  return (fwrite(buffer, 1, size, emitter->output.file) == size);
445
451
  }
@@ -617,10 +623,10 @@ yaml_token_delete(yaml_token_t *token)
617
623
  */
618
624
 
619
625
  static int
620
- yaml_check_utf8(yaml_char_t *start, size_t length)
626
+ yaml_check_utf8(const yaml_char_t *start, size_t length)
621
627
  {
622
- yaml_char_t *end = start+length;
623
- yaml_char_t *pointer = start;
628
+ const yaml_char_t *end = start+length;
629
+ const yaml_char_t *pointer = start;
624
630
 
625
631
  while (pointer < end) {
626
632
  unsigned char octet;
@@ -717,7 +723,7 @@ yaml_document_start_event_initialize(yaml_event_t *event,
717
723
  /* Valid tag directives are expected. */
718
724
 
719
725
  if (version_directive) {
720
- version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t));
726
+ version_directive_copy = YAML_MALLOC_STATIC(yaml_version_directive_t);
721
727
  if (!version_directive_copy) goto error;
722
728
  version_directive_copy->major = version_directive->major;
723
729
  version_directive_copy->minor = version_directive->minor;
@@ -725,7 +731,7 @@ yaml_document_start_event_initialize(yaml_event_t *event,
725
731
 
726
732
  if (tag_directives_start != tag_directives_end) {
727
733
  yaml_tag_directive_t *tag_directive;
728
- if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
734
+ if (!STACK_INIT(&context, tag_directives_copy, yaml_tag_directive_t*))
729
735
  goto error;
730
736
  for (tag_directive = tag_directives_start;
731
737
  tag_directive != tag_directives_end; tag_directive ++) {
@@ -788,7 +794,7 @@ yaml_document_end_event_initialize(yaml_event_t *event, int implicit)
788
794
  */
789
795
 
790
796
  YAML_DECLARE(int)
791
- yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor)
797
+ yaml_alias_event_initialize(yaml_event_t *event, const yaml_char_t *anchor)
792
798
  {
793
799
  yaml_mark_t mark = { 0, 0, 0 };
794
800
  yaml_char_t *anchor_copy = NULL;
@@ -813,8 +819,8 @@ yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor)
813
819
 
814
820
  YAML_DECLARE(int)
815
821
  yaml_scalar_event_initialize(yaml_event_t *event,
816
- yaml_char_t *anchor, yaml_char_t *tag,
817
- yaml_char_t *value, int length,
822
+ const yaml_char_t *anchor, const yaml_char_t *tag,
823
+ const yaml_char_t *value, int length,
818
824
  int plain_implicit, int quoted_implicit,
819
825
  yaml_scalar_style_t style)
820
826
  {
@@ -839,11 +845,11 @@ yaml_scalar_event_initialize(yaml_event_t *event,
839
845
  }
840
846
 
841
847
  if (length < 0) {
842
- length = strlen((char *)value);
848
+ length = (int)strlen((char *)value);
843
849
  }
844
850
 
845
851
  if (!yaml_check_utf8(value, length)) goto error;
846
- value_copy = yaml_malloc(length+1);
852
+ value_copy = YAML_MALLOC(length+1);
847
853
  if (!value_copy) goto error;
848
854
  memcpy(value_copy, value, length);
849
855
  value_copy[length] = '\0';
@@ -867,7 +873,7 @@ error:
867
873
 
868
874
  YAML_DECLARE(int)
869
875
  yaml_sequence_start_event_initialize(yaml_event_t *event,
870
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
876
+ const yaml_char_t *anchor, const yaml_char_t *tag, int implicit,
871
877
  yaml_sequence_style_t style)
872
878
  {
873
879
  yaml_mark_t mark = { 0, 0, 0 };
@@ -922,7 +928,7 @@ yaml_sequence_end_event_initialize(yaml_event_t *event)
922
928
 
923
929
  YAML_DECLARE(int)
924
930
  yaml_mapping_start_event_initialize(yaml_event_t *event,
925
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
931
+ const yaml_char_t *anchor, const yaml_char_t *tag, int implicit,
926
932
  yaml_mapping_style_t style)
927
933
  {
928
934
  yaml_mark_t mark = { 0, 0, 0 };
@@ -1055,10 +1061,10 @@ yaml_document_initialize(yaml_document_t *document,
1055
1061
  (tag_directives_start == tag_directives_end));
1056
1062
  /* Valid tag directives are expected. */
1057
1063
 
1058
- if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error;
1064
+ if (!STACK_INIT(&context, nodes, yaml_node_t*)) goto error;
1059
1065
 
1060
1066
  if (version_directive) {
1061
- version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t));
1067
+ version_directive_copy = YAML_MALLOC_STATIC(yaml_version_directive_t);
1062
1068
  if (!version_directive_copy) goto error;
1063
1069
  version_directive_copy->major = version_directive->major;
1064
1070
  version_directive_copy->minor = version_directive->minor;
@@ -1066,7 +1072,7 @@ yaml_document_initialize(yaml_document_t *document,
1066
1072
 
1067
1073
  if (tag_directives_start != tag_directives_end) {
1068
1074
  yaml_tag_directive_t *tag_directive;
1069
- if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
1075
+ if (!STACK_INIT(&context, tag_directives_copy, yaml_tag_directive_t*))
1070
1076
  goto error;
1071
1077
  for (tag_directive = tag_directives_start;
1072
1078
  tag_directive != tag_directives_end; tag_directive ++) {
@@ -1116,13 +1122,8 @@ error:
1116
1122
  YAML_DECLARE(void)
1117
1123
  yaml_document_delete(yaml_document_t *document)
1118
1124
  {
1119
- struct {
1120
- yaml_error_type_t error;
1121
- } context;
1122
1125
  yaml_tag_directive_t *tag_directive;
1123
1126
 
1124
- context.error = YAML_NO_ERROR; /* Eliminate a compliler warning. */
1125
-
1126
1127
  assert(document); /* Non-NULL document object is expected. */
1127
1128
 
1128
1129
  while (!STACK_EMPTY(&context, document->nodes)) {
@@ -1192,7 +1193,7 @@ yaml_document_get_root_node(yaml_document_t *document)
1192
1193
 
1193
1194
  YAML_DECLARE(int)
1194
1195
  yaml_document_add_scalar(yaml_document_t *document,
1195
- yaml_char_t *tag, yaml_char_t *value, int length,
1196
+ const yaml_char_t *tag, const yaml_char_t *value, int length,
1196
1197
  yaml_scalar_style_t style)
1197
1198
  {
1198
1199
  struct {
@@ -1215,11 +1216,11 @@ yaml_document_add_scalar(yaml_document_t *document,
1215
1216
  if (!tag_copy) goto error;
1216
1217
 
1217
1218
  if (length < 0) {
1218
- length = strlen((char *)value);
1219
+ length = (int)strlen((char *)value);
1219
1220
  }
1220
1221
 
1221
1222
  if (!yaml_check_utf8(value, length)) goto error;
1222
- value_copy = yaml_malloc(length+1);
1223
+ value_copy = YAML_MALLOC(length+1);
1223
1224
  if (!value_copy) goto error;
1224
1225
  memcpy(value_copy, value, length);
1225
1226
  value_copy[length] = '\0';
@@ -1227,7 +1228,7 @@ yaml_document_add_scalar(yaml_document_t *document,
1227
1228
  SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark);
1228
1229
  if (!PUSH(&context, document->nodes, node)) goto error;
1229
1230
 
1230
- return document->nodes.top - document->nodes.start;
1231
+ return (int)(document->nodes.top - document->nodes.start);
1231
1232
 
1232
1233
  error:
1233
1234
  yaml_free(tag_copy);
@@ -1242,7 +1243,7 @@ error:
1242
1243
 
1243
1244
  YAML_DECLARE(int)
1244
1245
  yaml_document_add_sequence(yaml_document_t *document,
1245
- yaml_char_t *tag, yaml_sequence_style_t style)
1246
+ const yaml_char_t *tag, yaml_sequence_style_t style)
1246
1247
  {
1247
1248
  struct {
1248
1249
  yaml_error_type_t error;
@@ -1266,13 +1267,13 @@ yaml_document_add_sequence(yaml_document_t *document,
1266
1267
  tag_copy = yaml_strdup(tag);
1267
1268
  if (!tag_copy) goto error;
1268
1269
 
1269
- if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error;
1270
+ if (!STACK_INIT(&context, items, yaml_node_item_t*)) goto error;
1270
1271
 
1271
1272
  SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,
1272
1273
  style, mark, mark);
1273
1274
  if (!PUSH(&context, document->nodes, node)) goto error;
1274
1275
 
1275
- return document->nodes.top - document->nodes.start;
1276
+ return (int)(document->nodes.top - document->nodes.start);
1276
1277
 
1277
1278
  error:
1278
1279
  STACK_DEL(&context, items);
@@ -1287,7 +1288,7 @@ error:
1287
1288
 
1288
1289
  YAML_DECLARE(int)
1289
1290
  yaml_document_add_mapping(yaml_document_t *document,
1290
- yaml_char_t *tag, yaml_mapping_style_t style)
1291
+ const yaml_char_t *tag, yaml_mapping_style_t style)
1291
1292
  {
1292
1293
  struct {
1293
1294
  yaml_error_type_t error;
@@ -1311,13 +1312,13 @@ yaml_document_add_mapping(yaml_document_t *document,
1311
1312
  tag_copy = yaml_strdup(tag);
1312
1313
  if (!tag_copy) goto error;
1313
1314
 
1314
- if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error;
1315
+ if (!STACK_INIT(&context, pairs, yaml_node_pair_t*)) goto error;
1315
1316
 
1316
1317
  MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,
1317
1318
  style, mark, mark);
1318
1319
  if (!PUSH(&context, document->nodes, node)) goto error;
1319
1320
 
1320
- return document->nodes.top - document->nodes.start;
1321
+ return (int)(document->nodes.top - document->nodes.start);
1321
1322
 
1322
1323
  error:
1323
1324
  STACK_DEL(&context, pairs);