mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* ext/syck/rubyext.c (id_hash_new): new function to create a hash
which key is compared by object id. (syck_parser_load): use id_hash_new for bonus->data. (syck_parser_load_documents): ditto. (syck_emitter_reset): ditto. * lib/yaml.rb (YAML.quick_emit): give the object itself to eimitter. don't use object_id and hash. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									0570b9969b
								
							
						
					
					
						commit
						dfc3fccef3
					
				
					 3 changed files with 23 additions and 7 deletions
				
			
		
							
								
								
									
										11
									
								
								ChangeLog
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								ChangeLog
									
										
									
									
									
								
							|  | @ -1,3 +1,14 @@ | |||
| Sat Aug 22 13:46:15 2009  Tanaka Akira  <akr@fsij.org> | ||||
| 
 | ||||
| 	* ext/syck/rubyext.c (id_hash_new): new function to create a hash | ||||
| 	  which key is compared by object id. | ||||
| 	  (syck_parser_load): use id_hash_new for bonus->data. | ||||
| 	  (syck_parser_load_documents): ditto. | ||||
| 	  (syck_emitter_reset): ditto. | ||||
| 
 | ||||
| 	* lib/yaml.rb (YAML.quick_emit): give the object itself to eimitter. | ||||
| 	  don't use object_id and hash. | ||||
| 
 | ||||
| Sat Aug 22 13:05:22 2009  NARUSE, Yui  <naruse@ruby-lang.org> | ||||
| 
 | ||||
| 	* Makefile.in: use CP and MV macros. | ||||
|  |  | |||
|  | @ -837,6 +837,15 @@ syck_parser_bufsize_get(VALUE self) | |||
|     return INT2FIX( parser->bufsize ); | ||||
| } | ||||
| 
 | ||||
| static VALUE | ||||
| id_hash_new(void) | ||||
| { | ||||
|     VALUE hash; | ||||
|     hash = rb_hash_new(); | ||||
|     rb_funcall(hash, rb_intern("compare_by_identity"), 0); | ||||
|     return hash; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * YAML::Syck::Parser.load( IO or String ) | ||||
|  */ | ||||
|  | @ -856,7 +865,7 @@ syck_parser_load(int argc, VALUE *argv, VALUE self) | |||
| 
 | ||||
|     bonus = (struct parser_xtra *)parser->bonus; | ||||
|     bonus->taint = syck_parser_assign_io(parser, &port); | ||||
|     bonus->data = rb_hash_new(); | ||||
|     bonus->data = id_hash_new(); | ||||
|     bonus->resolver = rb_attr_get( self, s_resolver ); | ||||
|     if ( NIL_P( proc ) ) bonus->proc = 0; | ||||
|     else                 bonus->proc = proc; | ||||
|  | @ -889,7 +898,7 @@ syck_parser_load_documents(int argc, VALUE *argv, VALUE self) | |||
|     while ( 1 ) | ||||
|     { | ||||
|         /* Reset hash for tracking nodes */ | ||||
|         bonus->data = rb_hash_new(); | ||||
|         bonus->data = id_hash_new(); | ||||
| 
 | ||||
|         /* Parse a document */ | ||||
|         v = syck_parse( parser ); | ||||
|  | @ -1953,7 +1962,7 @@ syck_emitter_reset(int argc, VALUE *argv, VALUE self) | |||
| 
 | ||||
|     bonus->oid = Qnil; | ||||
|     bonus->port = rb_str_new2( "" ); | ||||
|     bonus->data = rb_hash_new(); | ||||
|     bonus->data = id_hash_new(); | ||||
| 
 | ||||
|     if (rb_scan_args(argc, argv, "01", &options) == 0) | ||||
|     { | ||||
|  |  | |||
|  | @ -384,10 +384,6 @@ module YAML | |||
|             else | ||||
|                 emitter.reset( opts ) | ||||
|             end | ||||
|         oid = | ||||
|             case oid when Fixnum, NilClass; oid | ||||
|             else oid = "#{oid.object_id}-#{oid.hash}" | ||||
|             end | ||||
|         out.emit( oid, &e ) | ||||
| 	end | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 akr
						akr