msgpack 0.3.8-x86-mingw32 → 0.3.9-x86-mingw32
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.
- data/ext/unpack.c +26 -8
- data/lib/1.8/msgpack.so +0 -0
- data/lib/1.9/msgpack.so +0 -0
- data/test/msgpack_test.rb +28 -2
- metadata +3 -3
    
        data/ext/unpack.c
    CHANGED
    
    | @@ -389,25 +389,43 @@ static VALUE MessagePack_unpack(VALUE self, VALUE data) | |
| 389 389 | 
             
            }
         | 
| 390 390 |  | 
| 391 391 |  | 
| 392 | 
            +
            static VALUE MessagePack_Unpacker_execute_impl(VALUE self, VALUE data,
         | 
| 393 | 
            +
            		size_t from, size_t limit)
         | 
| 394 | 
            +
            {
         | 
| 395 | 
            +
            	UNPACKER(self, mp);
         | 
| 396 | 
            +
             | 
| 397 | 
            +
            	if(from >= limit) {
         | 
| 398 | 
            +
            		rb_raise(eUnpackError, "offset is bigger than data buffer size.");
         | 
| 399 | 
            +
            	}
         | 
| 400 | 
            +
             | 
| 401 | 
            +
            	int ret = template_execute_wrap(mp, data, limit, &from);
         | 
| 402 | 
            +
             | 
| 403 | 
            +
            	if(ret < 0) {
         | 
| 404 | 
            +
            		rb_raise(eUnpackError, "parse error.");
         | 
| 405 | 
            +
            	} else if(ret > 0) {
         | 
| 406 | 
            +
            		mp->user.finished = 1;
         | 
| 407 | 
            +
            		return ULONG2NUM(from);
         | 
| 408 | 
            +
            	} else {
         | 
| 409 | 
            +
            		mp->user.finished = 0;
         | 
| 410 | 
            +
            		return ULONG2NUM(from);
         | 
| 411 | 
            +
            	}
         | 
| 412 | 
            +
            }
         | 
| 413 | 
            +
             | 
| 392 414 | 
             
            /* compat */
         | 
| 393 415 | 
             
            static VALUE MessagePack_Unpacker_execute_limit(VALUE self, VALUE data,
         | 
| 394 416 | 
             
            		VALUE off, VALUE limit)
         | 
| 395 417 | 
             
            {
         | 
| 396 418 | 
             
            	CHECK_STRING_TYPE(data);
         | 
| 397 | 
            -
            	 | 
| 398 | 
            -
             | 
| 399 | 
            -
            	int ret = template_execute_wrap(mp, data, NUM2ULONG(limit), &from);
         | 
| 400 | 
            -
            	return INT2FIX(ret);
         | 
| 419 | 
            +
            	return MessagePack_Unpacker_execute_impl(self, data,
         | 
| 420 | 
            +
            			(size_t)NUM2ULONG(off), (size_t)NUM2ULONG(limit));
         | 
| 401 421 | 
             
            }
         | 
| 402 422 |  | 
| 403 423 | 
             
            /* compat */
         | 
| 404 424 | 
             
            static VALUE MessagePack_Unpacker_execute(VALUE self, VALUE data, VALUE off)
         | 
| 405 425 | 
             
            {
         | 
| 406 426 | 
             
            	CHECK_STRING_TYPE(data);
         | 
| 407 | 
            -
            	 | 
| 408 | 
            -
             | 
| 409 | 
            -
            	int ret = template_execute_wrap(mp, data, RSTRING_LEN(data), &from);
         | 
| 410 | 
            -
            	return INT2FIX(ret);
         | 
| 427 | 
            +
            	return MessagePack_Unpacker_execute_impl(self, data,
         | 
| 428 | 
            +
            			(size_t)NUM2ULONG(off), (size_t)RSTRING_LEN(data));
         | 
| 411 429 | 
             
            }
         | 
| 412 430 |  | 
| 413 431 | 
             
            /* compat */
         | 
    
        data/lib/1.8/msgpack.so
    CHANGED
    
    | Binary file | 
    
        data/lib/1.9/msgpack.so
    CHANGED
    
    | Binary file | 
    
        data/test/msgpack_test.rb
    CHANGED
    
    | @@ -204,9 +204,11 @@ class MessagePackTestFormat < Test::Unit::TestCase | |
| 204 204 |  | 
| 205 205 | 
             
            	it "gc mark" do
         | 
| 206 206 | 
             
            		obj = [{["a","b"]=>["c","d"]}, ["e","f"], "d"]
         | 
| 207 | 
            +
            		num = 4
         | 
| 208 | 
            +
            		raw = obj.to_msgpack * num
         | 
| 207 209 | 
             
            		pac = MessagePack::Unpacker.new
         | 
| 208 210 | 
             
            		parsed = 0
         | 
| 209 | 
            -
            		 | 
| 211 | 
            +
            		raw.split(//).each do |b|
         | 
| 210 212 | 
             
            			pac.feed(b)
         | 
| 211 213 | 
             
            			pac.each {|o|
         | 
| 212 214 | 
             
            				GC.start
         | 
| @@ -215,7 +217,31 @@ class MessagePackTestFormat < Test::Unit::TestCase | |
| 215 217 | 
             
            			}
         | 
| 216 218 | 
             
            			GC.start
         | 
| 217 219 | 
             
            		end
         | 
| 218 | 
            -
            		assert_equal(parsed,  | 
| 220 | 
            +
            		assert_equal(parsed, num)
         | 
| 221 | 
            +
            	end
         | 
| 222 | 
            +
             | 
| 223 | 
            +
            	it "streaming backward compatibility" do
         | 
| 224 | 
            +
            		obj = [{["a","b"]=>["c","d"]}, ["e","f"], "d"]
         | 
| 225 | 
            +
            		num = 4
         | 
| 226 | 
            +
            		raw = obj.to_msgpack * num
         | 
| 227 | 
            +
            		pac = MessagePack::Unpacker.new
         | 
| 228 | 
            +
            		buffer = ""
         | 
| 229 | 
            +
            		nread  = 0
         | 
| 230 | 
            +
            		parsed = 0
         | 
| 231 | 
            +
            		raw.split(//).each do |b|
         | 
| 232 | 
            +
            			buffer << b
         | 
| 233 | 
            +
            			nread = pac.execute(buffer, nread)
         | 
| 234 | 
            +
            			if pac.finished?
         | 
| 235 | 
            +
            				o = pac.data
         | 
| 236 | 
            +
            				assert_equal(obj, o)
         | 
| 237 | 
            +
            				parsed += 1
         | 
| 238 | 
            +
            				pac.reset
         | 
| 239 | 
            +
            				buffer.slice!(0, nread)
         | 
| 240 | 
            +
            				nread = 0
         | 
| 241 | 
            +
            				next unless buffer.empty?
         | 
| 242 | 
            +
            			end
         | 
| 243 | 
            +
            		end
         | 
| 244 | 
            +
            		assert_equal(parsed, num)
         | 
| 219 245 | 
             
            	end
         | 
| 220 246 |  | 
| 221 247 | 
             
            	private
         | 
    
        metadata
    CHANGED
    
    | @@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version | |
| 4 4 | 
             
              segments: 
         | 
| 5 5 | 
             
              - 0
         | 
| 6 6 | 
             
              - 3
         | 
| 7 | 
            -
              -  | 
| 8 | 
            -
              version: 0.3. | 
| 7 | 
            +
              - 9
         | 
| 8 | 
            +
              version: 0.3.9
         | 
| 9 9 | 
             
            platform: x86-mingw32
         | 
| 10 10 | 
             
            authors: 
         | 
| 11 11 | 
             
            - FURUHASHI Sadayuki
         | 
| @@ -13,7 +13,7 @@ autorequire: | |
| 13 13 | 
             
            bindir: bin
         | 
| 14 14 | 
             
            cert_chain: []
         | 
| 15 15 |  | 
| 16 | 
            -
            date: 2010-04- | 
| 16 | 
            +
            date: 2010-04-23 00:00:00 +09:00
         | 
| 17 17 | 
             
            default_executable: 
         | 
| 18 18 | 
             
            dependencies: []
         | 
| 19 19 |  |