msgpack 0.5.12-x86-mingw32 → 0.6.0pre1-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.
- checksums.yaml +4 -4
 - data/.gitignore +2 -0
 - data/.travis.yml +2 -3
 - data/Dockerfile +30 -0
 - data/Rakefile +1 -0
 - data/cross-build.sh +9 -0
 - data/ext/java/org/msgpack/jruby/Encoder.java +4 -5
 - data/ext/msgpack/buffer.c +16 -11
 - data/ext/msgpack/buffer.h +6 -0
 - data/ext/msgpack/packer.h +59 -2
 - data/ext/msgpack/unpacker.c +18 -14
 - data/lib/msgpack/version.rb +1 -1
 - data/spec/cruby/unpacker_spec.rb +6 -0
 - data/spec/format_spec.rb +59 -4
 - metadata +5 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5b8cb2059cf2c97ba89464da38b62e22bcdcf68e
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: c12418e80eac7d2a7a6a501abe1cb7cc4a168fa5
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2899ded84deadd0e46365efaa7464cd6a5ee7fd8a92362eeaa60db9f360ccdaba58d59d6f1682d1e050dc010b7380e33ac470943a3c4c276437e48440e4079d7
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 3c46b4d61e045a6a2ccd52415152b32d8f29460f90d279f5edb5a6c86f7a1f9c890c19ab71a1f20642aa8743d0278d63e79f119e4f7f1ab2f80d2922cb308bbe
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    
    
        data/Dockerfile
    ADDED
    
    | 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            FROM ubuntu:14.04
         
     | 
| 
      
 2 
     | 
    
         
            +
            MAINTAINER TAGOMORI Satoshi <tagomoris@gmail.com>
         
     | 
| 
      
 3 
     | 
    
         
            +
            LABEL Description="Host image to cross-compile msgpack.gem for mingw32" Vendor="MessagePack Organization" Version="1.0"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            USER ubuntu
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            RUN apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
         
     | 
| 
      
 8 
     | 
    
         
            +
            RUN apt-get install gcc-mingw32 mingw-w64
         
     | 
| 
      
 9 
     | 
    
         
            +
            # RUN git?
         
     | 
| 
      
 10 
     | 
    
         
            +
            RUN git clone https://github.com/tagomoris/xbuild.git /home/ubuntu/.xbuild
         
     | 
| 
      
 11 
     | 
    
         
            +
            RUN /home/ubuntu/.xbuild/ruby-install 2.2.2 /home/ubuntu/local/ruby-2.2
         
     | 
| 
      
 12 
     | 
    
         
            +
            RUN PATH=/home/ubuntu/local/ruby-2.2/bin:$PATH /home/ubuntu/local/ruby-2.2/bin/gem install rake-compiler
         
     | 
| 
      
 13 
     | 
    
         
            +
            RUN PATH=/home/ubuntu/local/ruby-2.2/bin:$PATH rake-compiler cross-ruby VERSION=2.2.2 EXTS=--without-extensions
         
     | 
| 
      
 14 
     | 
    
         
            +
            RUN /home/ubuntu/.xbuild/ruby-install 2.1.5 /home/ubuntu/local/ruby-2.1
         
     | 
| 
      
 15 
     | 
    
         
            +
            RUN PATH=/home/ubuntu/local/ruby-2.1/bin:$PATH /home/ubuntu/local/ruby-2.1/bin/gem install rake-compiler
         
     | 
| 
      
 16 
     | 
    
         
            +
            RUN PATH=/home/ubuntu/local/ruby-2.1/bin:$PATH rake-compiler cross-ruby VERSION=2.1.5 EXTS=--without-extensions
         
     | 
| 
      
 17 
     | 
    
         
            +
            RUN /home/ubuntu/.xbuild/ruby-install 2.0.0-p643 /home/ubuntu/local/ruby-2.0
         
     | 
| 
      
 18 
     | 
    
         
            +
            RUN PATH=/home/ubuntu/local/ruby-2.0/bin:$PATH /home/ubuntu/local/ruby-2.0/bin/gem install rake-compiler
         
     | 
| 
      
 19 
     | 
    
         
            +
            RUN PATH=/home/ubuntu/local/ruby-2.0/bin:$PATH rake-compiler cross-ruby VERSION=2.0.0-p643 EXTS=--without-extensions
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            RUN git clone https://github.com/msgpack/msgpack-ruby.git /home/ubuntu/msgpack-ruby
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            WORKDIR /home/ubuntu/msgpack-ruby
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ENV MSGPACK_REPO https://github.com/msgpack/msgpack-ruby.git
         
     | 
| 
      
 26 
     | 
    
         
            +
            ENV BUILD_BRANCH master
         
     | 
| 
      
 27 
     | 
    
         
            +
            ENV BUILD_POSITION HEAD
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            ENTRYPOINT ["/home/ubuntu/msgpack-ruby/cross-build.sh", "/home/ubuntu/local/ruby-2.2", "2.0.0-p643:2.1.5:2.2.2"]
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/cross-build.sh
    ADDED
    
    
| 
         @@ -199,11 +199,10 @@ public class Encoder { 
     | 
|
| 
       199 
199 
     | 
    
         
             
                if (length < 32 && !binary) {
         
     | 
| 
       200 
200 
     | 
    
         
             
                  ensureRemainingCapacity(1 + length);
         
     | 
| 
       201 
201 
     | 
    
         
             
                  buffer.put((byte) (length | FIXSTR));
         
     | 
| 
       202 
     | 
    
         
            -
                 
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
       206 
     | 
    
         
            -
                //   buffer.put((byte) length);
         
     | 
| 
      
 202 
     | 
    
         
            +
                } else if (length <= 0xff) {
         
     | 
| 
      
 203 
     | 
    
         
            +
                  ensureRemainingCapacity(2 + length);
         
     | 
| 
      
 204 
     | 
    
         
            +
                  buffer.put(binary ? BIN8 : STR8);
         
     | 
| 
      
 205 
     | 
    
         
            +
                  buffer.put((byte) length);
         
     | 
| 
       207 
206 
     | 
    
         
             
                } else if (length <= 0xffff) {
         
     | 
| 
       208 
207 
     | 
    
         
             
                  ensureRemainingCapacity(3 + length);
         
     | 
| 
       209 
208 
     | 
    
         
             
                  buffer.put(binary ? BIN16 : STR16);
         
     | 
    
        data/ext/msgpack/buffer.c
    CHANGED
    
    | 
         @@ -19,30 +19,35 @@ 
     | 
|
| 
       19 
19 
     | 
    
         
             
            #include "buffer.h"
         
     | 
| 
       20 
20 
     | 
    
         
             
            #include "rmem.h"
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
            #ifdef COMPAT_HAVE_ENCODING  /* see compat.h*/
         
     | 
| 
       23 
     | 
    
         
            -
            int s_enc_ascii8bit;
         
     | 
| 
       24 
     | 
    
         
            -
            #endif
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
22 
     | 
    
         
             
            #ifndef HAVE_RB_STR_REPLACE
         
     | 
| 
       27 
23 
     | 
    
         
             
            static ID s_replace;
         
     | 
| 
       28 
24 
     | 
    
         
             
            #endif
         
     | 
| 
       29 
25 
     | 
    
         | 
| 
      
 26 
     | 
    
         
            +
            #ifdef COMPAT_HAVE_ENCODING  /* see compat.h*/
         
     | 
| 
      
 27 
     | 
    
         
            +
            int msgpack_rb_encindex_utf8;
         
     | 
| 
      
 28 
     | 
    
         
            +
            int msgpack_rb_encindex_usascii;
         
     | 
| 
      
 29 
     | 
    
         
            +
            int msgpack_rb_encindex_ascii8bit;
         
     | 
| 
      
 30 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       30 
32 
     | 
    
         
             
            #ifndef DISABLE_RMEM
         
     | 
| 
       31 
33 
     | 
    
         
             
            static msgpack_rmem_t s_rmem;
         
     | 
| 
       32 
34 
     | 
    
         
             
            #endif
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
       34 
36 
     | 
    
         
             
            void msgpack_buffer_static_init()
         
     | 
| 
       35 
37 
     | 
    
         
             
            {
         
     | 
| 
      
 38 
     | 
    
         
            +
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
      
 39 
     | 
    
         
            +
                msgpack_rb_encindex_utf8 = rb_utf8_encindex();
         
     | 
| 
      
 40 
     | 
    
         
            +
                msgpack_rb_encindex_usascii = rb_usascii_encindex();
         
     | 
| 
      
 41 
     | 
    
         
            +
                msgpack_rb_encindex_ascii8bit = rb_ascii8bit_encindex();
         
     | 
| 
      
 42 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
       36 
44 
     | 
    
         
             
            #ifndef DISABLE_RMEM
         
     | 
| 
       37 
45 
     | 
    
         
             
                msgpack_rmem_init(&s_rmem);
         
     | 
| 
       38 
46 
     | 
    
         
             
            #endif
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
       39 
48 
     | 
    
         
             
            #ifndef HAVE_RB_STR_REPLACE
         
     | 
| 
       40 
49 
     | 
    
         
             
                s_replace = rb_intern("replace");
         
     | 
| 
       41 
50 
     | 
    
         
             
            #endif
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
       44 
     | 
    
         
            -
                s_enc_ascii8bit = rb_ascii8bit_encindex();
         
     | 
| 
       45 
     | 
    
         
            -
            #endif
         
     | 
| 
       46 
51 
     | 
    
         
             
            }
         
     | 
| 
       47 
52 
     | 
    
         | 
| 
       48 
53 
     | 
    
         
             
            void msgpack_buffer_static_destroy()
         
     | 
| 
         @@ -304,7 +309,7 @@ static inline void _msgpack_buffer_append_reference(msgpack_buffer_t* b, VALUE s 
     | 
|
| 
       304 
309 
     | 
    
         
             
            {
         
     | 
| 
       305 
310 
     | 
    
         
             
                VALUE mapped_string = rb_str_dup(string);
         
     | 
| 
       306 
311 
     | 
    
         
             
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
       307 
     | 
    
         
            -
                ENCODING_SET(mapped_string,  
     | 
| 
      
 312 
     | 
    
         
            +
                ENCODING_SET(mapped_string, msgpack_rb_encindex_ascii8bit);
         
     | 
| 
       308 
313 
     | 
    
         
             
            #endif
         
     | 
| 
       309 
314 
     | 
    
         | 
| 
       310 
315 
     | 
    
         
             
                _msgpack_buffer_add_new_chunk(b);
         
     | 
| 
         @@ -333,11 +338,11 @@ void _msgpack_buffer_append_long_string(msgpack_buffer_t* b, VALUE string) 
     | 
|
| 
       333 
338 
     | 
    
         
             
                if(b->io != Qnil) {
         
     | 
| 
       334 
339 
     | 
    
         
             
                    msgpack_buffer_flush(b);
         
     | 
| 
       335 
340 
     | 
    
         
             
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
       336 
     | 
    
         
            -
                    if (ENCODING_GET(string) ==  
     | 
| 
      
 341 
     | 
    
         
            +
                    if (ENCODING_GET(string) == msgpack_rb_encindex_ascii8bit) {
         
     | 
| 
       337 
342 
     | 
    
         
             
                        rb_funcall(b->io, b->io_write_all_method, 1, string);
         
     | 
| 
       338 
343 
     | 
    
         
             
                    } else if(!STR_DUP_LIKELY_DOES_COPY(string)) {
         
     | 
| 
       339 
344 
     | 
    
         
             
                        VALUE s = rb_str_dup(string);
         
     | 
| 
       340 
     | 
    
         
            -
                        ENCODING_SET(s,  
     | 
| 
      
 345 
     | 
    
         
            +
                        ENCODING_SET(s, msgpack_rb_encindex_ascii8bit);
         
     | 
| 
       341 
346 
     | 
    
         
             
                        rb_funcall(b->io, b->io_write_all_method, 1, s);
         
     | 
| 
       342 
347 
     | 
    
         
             
                    } else {
         
     | 
| 
       343 
348 
     | 
    
         
             
                        msgpack_buffer_append(b, RSTRING_PTR(string), length);
         
     | 
    
        data/ext/msgpack/buffer.h
    CHANGED
    
    | 
         @@ -49,6 +49,12 @@ 
     | 
|
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
            #define NO_MAPPED_STRING ((VALUE)0)
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
            #ifdef COMPAT_HAVE_ENCODING  /* see compat.h*/
         
     | 
| 
      
 53 
     | 
    
         
            +
            extern int msgpack_rb_encindex_utf8;
         
     | 
| 
      
 54 
     | 
    
         
            +
            extern int msgpack_rb_encindex_usascii;
         
     | 
| 
      
 55 
     | 
    
         
            +
            extern int msgpack_rb_encindex_ascii8bit;
         
     | 
| 
      
 56 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       52 
58 
     | 
    
         
             
            struct msgpack_buffer_chunk_t;
         
     | 
| 
       53 
59 
     | 
    
         
             
            typedef struct msgpack_buffer_chunk_t msgpack_buffer_chunk_t;
         
     | 
| 
       54 
60 
     | 
    
         | 
    
        data/ext/msgpack/packer.h
    CHANGED
    
    | 
         @@ -66,7 +66,6 @@ static inline void msgpack_packer_set_io(msgpack_packer_t* pk, VALUE io, ID io_w 
     | 
|
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
            void msgpack_packer_reset(msgpack_packer_t* pk);
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
69 
     | 
    
         
             
            static inline void msgpack_packer_write_nil(msgpack_packer_t* pk)
         
     | 
| 
       71 
70 
     | 
    
         
             
            {
         
     | 
| 
       72 
71 
     | 
    
         
             
                msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 1);
         
     | 
| 
         @@ -271,6 +270,10 @@ static inline void msgpack_packer_write_raw_header(msgpack_packer_t* pk, unsigne 
     | 
|
| 
       271 
270 
     | 
    
         
             
                    msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 1);
         
     | 
| 
       272 
271 
     | 
    
         
             
                    unsigned char h = 0xa0 | (uint8_t) n;
         
     | 
| 
       273 
272 
     | 
    
         
             
                    msgpack_buffer_write_1(PACKER_BUFFER_(pk), h);
         
     | 
| 
      
 273 
     | 
    
         
            +
                } else if(n < 256) {
         
     | 
| 
      
 274 
     | 
    
         
            +
                    msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 2);
         
     | 
| 
      
 275 
     | 
    
         
            +
                    unsigned char be = (uint8_t) n;
         
     | 
| 
      
 276 
     | 
    
         
            +
                    msgpack_buffer_write_byte_and_data(PACKER_BUFFER_(pk), 0xd9, (const void*)&be, 1);
         
     | 
| 
       274 
277 
     | 
    
         
             
                } else if(n < 65536) {
         
     | 
| 
       275 
278 
     | 
    
         
             
                    msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 3);
         
     | 
| 
       276 
279 
     | 
    
         
             
                    uint16_t be = _msgpack_be16(n);
         
     | 
| 
         @@ -282,6 +285,23 @@ static inline void msgpack_packer_write_raw_header(msgpack_packer_t* pk, unsigne 
     | 
|
| 
       282 
285 
     | 
    
         
             
                }
         
     | 
| 
       283 
286 
     | 
    
         
             
            }
         
     | 
| 
       284 
287 
     | 
    
         | 
| 
      
 288 
     | 
    
         
            +
            static inline void msgpack_packer_write_bin_header(msgpack_packer_t* pk, unsigned int n)
         
     | 
| 
      
 289 
     | 
    
         
            +
            {
         
     | 
| 
      
 290 
     | 
    
         
            +
                if(n < 256) {
         
     | 
| 
      
 291 
     | 
    
         
            +
                    msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 1);
         
     | 
| 
      
 292 
     | 
    
         
            +
                    unsigned char be = (uint8_t) n;
         
     | 
| 
      
 293 
     | 
    
         
            +
                    msgpack_buffer_write_byte_and_data(PACKER_BUFFER_(pk), 0xc4, (const void*)&be, 1);
         
     | 
| 
      
 294 
     | 
    
         
            +
                } else if(n < 65536) {
         
     | 
| 
      
 295 
     | 
    
         
            +
                    msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 3);
         
     | 
| 
      
 296 
     | 
    
         
            +
                    uint16_t be = _msgpack_be16(n);
         
     | 
| 
      
 297 
     | 
    
         
            +
                    msgpack_buffer_write_byte_and_data(PACKER_BUFFER_(pk), 0xc5, (const void*)&be, 2);
         
     | 
| 
      
 298 
     | 
    
         
            +
                } else {
         
     | 
| 
      
 299 
     | 
    
         
            +
                    msgpack_buffer_ensure_writable(PACKER_BUFFER_(pk), 5);
         
     | 
| 
      
 300 
     | 
    
         
            +
                    uint32_t be = _msgpack_be32(n);
         
     | 
| 
      
 301 
     | 
    
         
            +
                    msgpack_buffer_write_byte_and_data(PACKER_BUFFER_(pk), 0xc6, (const void*)&be, 4);
         
     | 
| 
      
 302 
     | 
    
         
            +
                }
         
     | 
| 
      
 303 
     | 
    
         
            +
            }
         
     | 
| 
      
 304 
     | 
    
         
            +
             
     | 
| 
       285 
305 
     | 
    
         
             
            static inline void msgpack_packer_write_array_header(msgpack_packer_t* pk, unsigned int n)
         
     | 
| 
       286 
306 
     | 
    
         
             
            {
         
     | 
| 
       287 
307 
     | 
    
         
             
                if(n < 16) {
         
     | 
| 
         @@ -316,8 +336,25 @@ static inline void msgpack_packer_write_map_header(msgpack_packer_t* pk, unsigne 
     | 
|
| 
       316 
336 
     | 
    
         
             
                }
         
     | 
| 
       317 
337 
     | 
    
         
             
            }
         
     | 
| 
       318 
338 
     | 
    
         | 
| 
      
 339 
     | 
    
         
            +
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
      
 340 
     | 
    
         
            +
            static inline bool msgpack_packer_is_binary(VALUE v, int encindex)
         
     | 
| 
      
 341 
     | 
    
         
            +
            {
         
     | 
| 
      
 342 
     | 
    
         
            +
                return encindex == msgpack_rb_encindex_ascii8bit;
         
     | 
| 
      
 343 
     | 
    
         
            +
            }
         
     | 
| 
       319 
344 
     | 
    
         | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
      
 345 
     | 
    
         
            +
            static inline bool msgpack_packer_is_utf8_compat_string(VALUE v, int encindex)
         
     | 
| 
      
 346 
     | 
    
         
            +
            {
         
     | 
| 
      
 347 
     | 
    
         
            +
                return encindex == msgpack_rb_encindex_utf8
         
     | 
| 
      
 348 
     | 
    
         
            +
                    || encindex == msgpack_rb_encindex_usascii
         
     | 
| 
      
 349 
     | 
    
         
            +
            #ifdef ENC_CODERANGE_ASCIIONLY
         
     | 
| 
      
 350 
     | 
    
         
            +
                    /* Because ENC_CODERANGE_ASCIIONLY does not scan string, it may return ENC_CODERANGE_UNKNOWN unlike */
         
     | 
| 
      
 351 
     | 
    
         
            +
                    /* rb_enc_str_asciionly_p. It is always faster than rb_str_encode if it is available. */
         
     | 
| 
      
 352 
     | 
    
         
            +
                    /* Very old Rubinius (< v1.3.1) doesn't have ENC_CODERANGE_ASCIIONLY. */
         
     | 
| 
      
 353 
     | 
    
         
            +
                    || (rb_enc_asciicompat(rb_enc_from_index(encindex)) && ENC_CODERANGE_ASCIIONLY(v))
         
     | 
| 
      
 354 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 355 
     | 
    
         
            +
                    ;
         
     | 
| 
      
 356 
     | 
    
         
            +
            }
         
     | 
| 
      
 357 
     | 
    
         
            +
            #endif
         
     | 
| 
       321 
358 
     | 
    
         | 
| 
       322 
359 
     | 
    
         
             
            static inline void msgpack_packer_write_string_value(msgpack_packer_t* pk, VALUE v)
         
     | 
| 
       323 
360 
     | 
    
         
             
            {
         
     | 
| 
         @@ -328,8 +365,28 @@ static inline void msgpack_packer_write_string_value(msgpack_packer_t* pk, VALUE 
     | 
|
| 
       328 
365 
     | 
    
         
             
                    // TODO rb_eArgError?
         
     | 
| 
       329 
366 
     | 
    
         
             
                    rb_raise(rb_eArgError, "size of string is too long to pack: %lu bytes should be <= %lu", len, 0xffffffffUL);
         
     | 
| 
       330 
367 
     | 
    
         
             
                }
         
     | 
| 
      
 368 
     | 
    
         
            +
             
     | 
| 
      
 369 
     | 
    
         
            +
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
      
 370 
     | 
    
         
            +
                int encindex = ENCODING_GET(v);
         
     | 
| 
      
 371 
     | 
    
         
            +
                if(msgpack_packer_is_binary(v, encindex)) {
         
     | 
| 
      
 372 
     | 
    
         
            +
                    /* write ASCII-8BIT string using Binary type */
         
     | 
| 
      
 373 
     | 
    
         
            +
                    msgpack_packer_write_bin_header(pk, (unsigned int)len);
         
     | 
| 
      
 374 
     | 
    
         
            +
                    msgpack_buffer_append_string(PACKER_BUFFER_(pk), v);
         
     | 
| 
      
 375 
     | 
    
         
            +
                } else {
         
     | 
| 
      
 376 
     | 
    
         
            +
                    /* write UTF-8, US-ASCII, or 7bit-safe ascii-compatible string using String type directly */
         
     | 
| 
      
 377 
     | 
    
         
            +
                    if(!msgpack_packer_is_utf8_compat_string(v, encindex)) {
         
     | 
| 
      
 378 
     | 
    
         
            +
                        /* transcode other strings to UTF-8 and write using String type */
         
     | 
| 
      
 379 
     | 
    
         
            +
                        VALUE enc = rb_enc_from_encoding(rb_utf8_encoding()); /* rb_enc_from_encoding_index is not extern */
         
     | 
| 
      
 380 
     | 
    
         
            +
                        v = rb_str_encode(v, enc, 0, Qnil);
         
     | 
| 
      
 381 
     | 
    
         
            +
                        len = RSTRING_LEN(v);
         
     | 
| 
      
 382 
     | 
    
         
            +
                    }
         
     | 
| 
      
 383 
     | 
    
         
            +
                    msgpack_packer_write_raw_header(pk, (unsigned int)len);
         
     | 
| 
      
 384 
     | 
    
         
            +
                    msgpack_buffer_append_string(PACKER_BUFFER_(pk), v);
         
     | 
| 
      
 385 
     | 
    
         
            +
                }
         
     | 
| 
      
 386 
     | 
    
         
            +
            #else
         
     | 
| 
       331 
387 
     | 
    
         
             
                msgpack_packer_write_raw_header(pk, (unsigned int)len);
         
     | 
| 
       332 
388 
     | 
    
         
             
                msgpack_buffer_append_string(PACKER_BUFFER_(pk), v);
         
     | 
| 
      
 389 
     | 
    
         
            +
            #endif
         
     | 
| 
       333 
390 
     | 
    
         
             
            }
         
     | 
| 
       334 
391 
     | 
    
         | 
| 
       335 
392 
     | 
    
         
             
            static inline void msgpack_packer_write_symbol_value(msgpack_packer_t* pk, VALUE v)
         
     | 
    
        data/ext/msgpack/unpacker.c
    CHANGED
    
    | 
         @@ -28,19 +28,11 @@ 
     | 
|
| 
       28 
28 
     | 
    
         
             
            static msgpack_rmem_t s_stack_rmem;
         
     | 
| 
       29 
29 
     | 
    
         
             
            #endif
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
            #ifdef COMPAT_HAVE_ENCODING  /* see compat.h*/
         
     | 
| 
       32 
     | 
    
         
            -
            static int s_enc_utf8;
         
     | 
| 
       33 
     | 
    
         
            -
            #endif
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
31 
     | 
    
         
             
            void msgpack_unpacker_static_init()
         
     | 
| 
       36 
32 
     | 
    
         
             
            {
         
     | 
| 
       37 
33 
     | 
    
         
             
            #ifdef UNPACKER_STACK_RMEM
         
     | 
| 
       38 
34 
     | 
    
         
             
                msgpack_rmem_init(&s_stack_rmem);
         
     | 
| 
       39 
35 
     | 
    
         
             
            #endif
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
       42 
     | 
    
         
            -
                s_enc_utf8 = rb_utf8_encindex();
         
     | 
| 
       43 
     | 
    
         
            -
            #endif
         
     | 
| 
       44 
36 
     | 
    
         
             
            }
         
     | 
| 
       45 
37 
     | 
    
         | 
| 
       46 
38 
     | 
    
         
             
            void msgpack_unpacker_static_destroy()
         
     | 
| 
         @@ -149,9 +141,17 @@ static inline int object_complete(msgpack_unpacker_t* uk, VALUE object) 
     | 
|
| 
       149 
141 
     | 
    
         | 
| 
       150 
142 
     | 
    
         
             
            static inline int object_complete_string(msgpack_unpacker_t* uk, VALUE str)
         
     | 
| 
       151 
143 
     | 
    
         
             
            {
         
     | 
| 
      
 144 
     | 
    
         
            +
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
      
 145 
     | 
    
         
            +
                ENCODING_SET(str, msgpack_rb_encindex_utf8);
         
     | 
| 
      
 146 
     | 
    
         
            +
            #endif
         
     | 
| 
      
 147 
     | 
    
         
            +
                return object_complete(uk, str);
         
     | 
| 
      
 148 
     | 
    
         
            +
            }
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
            static inline int object_complete_binary(msgpack_unpacker_t* uk, VALUE str)
         
     | 
| 
      
 151 
     | 
    
         
            +
            {
         
     | 
| 
       152 
152 
     | 
    
         
             
            #ifdef COMPAT_HAVE_ENCODING
         
     | 
| 
       153 
153 
     | 
    
         
             
                // TODO ruby 2.0 has String#b method
         
     | 
| 
       154 
     | 
    
         
            -
                ENCODING_SET(str,  
     | 
| 
      
 154 
     | 
    
         
            +
                ENCODING_SET(str, msgpack_rb_encindex_ascii8bit);
         
     | 
| 
       155 
155 
     | 
    
         
             
            #endif
         
     | 
| 
       156 
156 
     | 
    
         
             
                return object_complete(uk, str);
         
     | 
| 
       157 
157 
     | 
    
         
             
            }
         
     | 
| 
         @@ -258,7 +258,11 @@ static inline int read_raw_body_begin(msgpack_unpacker_t* uk, bool str) 
     | 
|
| 
       258 
258 
     | 
    
         
             
                     * because rb_hash_aset freezes keys and it causes copying */
         
     | 
| 
       259 
259 
     | 
    
         
             
                    bool will_freeze = is_reading_map_key(uk);
         
     | 
| 
       260 
260 
     | 
    
         
             
                    VALUE string = msgpack_buffer_read_top_as_string(UNPACKER_BUFFER_(uk), length, will_freeze);
         
     | 
| 
       261 
     | 
    
         
            -
                     
     | 
| 
      
 261 
     | 
    
         
            +
                    if(str == true) {
         
     | 
| 
      
 262 
     | 
    
         
            +
                        object_complete_string(uk, string);
         
     | 
| 
      
 263 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 264 
     | 
    
         
            +
                        object_complete_binary(uk, string);
         
     | 
| 
      
 265 
     | 
    
         
            +
                    }
         
     | 
| 
       262 
266 
     | 
    
         
             
                    if(will_freeze) {
         
     | 
| 
       263 
267 
     | 
    
         
             
                        rb_obj_freeze(string);
         
     | 
| 
       264 
268 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -427,7 +431,7 @@ static int read_primitive(msgpack_unpacker_t* uk) 
     | 
|
| 
       427 
431 
     | 
    
         
             
                            return read_raw_body_begin(uk, true);
         
     | 
| 
       428 
432 
     | 
    
         
             
                        }
         
     | 
| 
       429 
433 
     | 
    
         | 
| 
       430 
     | 
    
         
            -
                    case 0xdb:  // raw 32 / str  
     | 
| 
      
 434 
     | 
    
         
            +
                    case 0xdb:  // raw 32 / str 32
         
     | 
| 
       431 
435 
     | 
    
         
             
                        {
         
     | 
| 
       432 
436 
     | 
    
         
             
                            READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 4);
         
     | 
| 
       433 
437 
     | 
    
         
             
                            uint32_t count = _msgpack_be32(cb->u32);
         
     | 
| 
         @@ -444,7 +448,7 @@ static int read_primitive(msgpack_unpacker_t* uk) 
     | 
|
| 
       444 
448 
     | 
    
         
             
                            READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 1);
         
     | 
| 
       445 
449 
     | 
    
         
             
                            uint8_t count = cb->u8;
         
     | 
| 
       446 
450 
     | 
    
         
             
                            if(count == 0) {
         
     | 
| 
       447 
     | 
    
         
            -
                                return  
     | 
| 
      
 451 
     | 
    
         
            +
                                return object_complete_binary(uk, rb_str_buf_new(0));
         
     | 
| 
       448 
452 
     | 
    
         
             
                            }
         
     | 
| 
       449 
453 
     | 
    
         
             
                            /* read_raw_body_begin sets uk->reading_raw */
         
     | 
| 
       450 
454 
     | 
    
         
             
                            uk->reading_raw_remaining = count;
         
     | 
| 
         @@ -456,7 +460,7 @@ static int read_primitive(msgpack_unpacker_t* uk) 
     | 
|
| 
       456 
460 
     | 
    
         
             
                            READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 2);
         
     | 
| 
       457 
461 
     | 
    
         
             
                            uint16_t count = _msgpack_be16(cb->u16);
         
     | 
| 
       458 
462 
     | 
    
         
             
                            if(count == 0) {
         
     | 
| 
       459 
     | 
    
         
            -
                                return  
     | 
| 
      
 463 
     | 
    
         
            +
                                return object_complete_binary(uk, rb_str_buf_new(0));
         
     | 
| 
       460 
464 
     | 
    
         
             
                            }
         
     | 
| 
       461 
465 
     | 
    
         
             
                            /* read_raw_body_begin sets uk->reading_raw */
         
     | 
| 
       462 
466 
     | 
    
         
             
                            uk->reading_raw_remaining = count;
         
     | 
| 
         @@ -468,7 +472,7 @@ static int read_primitive(msgpack_unpacker_t* uk) 
     | 
|
| 
       468 
472 
     | 
    
         
             
                            READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 4);
         
     | 
| 
       469 
473 
     | 
    
         
             
                            uint32_t count = _msgpack_be32(cb->u32);
         
     | 
| 
       470 
474 
     | 
    
         
             
                            if(count == 0) {
         
     | 
| 
       471 
     | 
    
         
            -
                                return  
     | 
| 
      
 475 
     | 
    
         
            +
                                return object_complete_binary(uk, rb_str_buf_new(0));
         
     | 
| 
       472 
476 
     | 
    
         
             
                            }
         
     | 
| 
       473 
477 
     | 
    
         
             
                            /* read_raw_body_begin sets uk->reading_raw */
         
     | 
| 
       474 
478 
     | 
    
         
             
                            uk->reading_raw_remaining = count;
         
     | 
    
        data/lib/msgpack/version.rb
    CHANGED
    
    
    
        data/spec/cruby/unpacker_spec.rb
    CHANGED
    
    | 
         @@ -262,36 +262,42 @@ describe Unpacker do 
     | 
|
| 
       262 
262 
     | 
    
         | 
| 
       263 
263 
     | 
    
         
             
              it "msgpack str 8 type" do
         
     | 
| 
       264 
264 
     | 
    
         
             
                MessagePack.unpack([0xd9, 0x00].pack('C*')).should == ""
         
     | 
| 
      
 265 
     | 
    
         
            +
                MessagePack.unpack([0xd9, 0x00].pack('C*')).encoding.should == Encoding::UTF_8
         
     | 
| 
       265 
266 
     | 
    
         
             
                MessagePack.unpack([0xd9, 0x01].pack('C*') + 'a').should == "a"
         
     | 
| 
       266 
267 
     | 
    
         
             
                MessagePack.unpack([0xd9, 0x02].pack('C*') + 'aa').should == "aa"
         
     | 
| 
       267 
268 
     | 
    
         
             
              end
         
     | 
| 
       268 
269 
     | 
    
         | 
| 
       269 
270 
     | 
    
         
             
              it "msgpack str 16 type" do
         
     | 
| 
       270 
271 
     | 
    
         
             
                MessagePack.unpack([0xda, 0x00, 0x00].pack('C*')).should == ""
         
     | 
| 
      
 272 
     | 
    
         
            +
                MessagePack.unpack([0xda, 0x00, 0x00].pack('C*')).encoding.should == Encoding::UTF_8
         
     | 
| 
       271 
273 
     | 
    
         
             
                MessagePack.unpack([0xda, 0x00, 0x01].pack('C*') + 'a').should == "a"
         
     | 
| 
       272 
274 
     | 
    
         
             
                MessagePack.unpack([0xda, 0x00, 0x02].pack('C*') + 'aa').should == "aa"
         
     | 
| 
       273 
275 
     | 
    
         
             
              end
         
     | 
| 
       274 
276 
     | 
    
         | 
| 
       275 
277 
     | 
    
         
             
              it "msgpack str 32 type" do
         
     | 
| 
       276 
278 
     | 
    
         
             
                MessagePack.unpack([0xdb, 0x00, 0x00, 0x00, 0x00].pack('C*')).should == ""
         
     | 
| 
      
 279 
     | 
    
         
            +
                MessagePack.unpack([0xdb, 0x00, 0x00, 0x00, 0x00].pack('C*')).encoding.should == Encoding::UTF_8
         
     | 
| 
       277 
280 
     | 
    
         
             
                MessagePack.unpack([0xdb, 0x00, 0x00, 0x00, 0x01].pack('C*') + 'a').should == "a"
         
     | 
| 
       278 
281 
     | 
    
         
             
                MessagePack.unpack([0xdb, 0x00, 0x00, 0x00, 0x02].pack('C*') + 'aa').should == "aa"
         
     | 
| 
       279 
282 
     | 
    
         
             
              end
         
     | 
| 
       280 
283 
     | 
    
         | 
| 
       281 
284 
     | 
    
         
             
              it "msgpack bin 8 type" do
         
     | 
| 
       282 
285 
     | 
    
         
             
                MessagePack.unpack([0xc4, 0x00].pack('C*')).should == ""
         
     | 
| 
      
 286 
     | 
    
         
            +
                MessagePack.unpack([0xc4, 0x00].pack('C*')).encoding.should == Encoding::ASCII_8BIT
         
     | 
| 
       283 
287 
     | 
    
         
             
                MessagePack.unpack([0xc4, 0x01].pack('C*') + 'a').should == "a"
         
     | 
| 
       284 
288 
     | 
    
         
             
                MessagePack.unpack([0xc4, 0x02].pack('C*') + 'aa').should == "aa"
         
     | 
| 
       285 
289 
     | 
    
         
             
              end
         
     | 
| 
       286 
290 
     | 
    
         | 
| 
       287 
291 
     | 
    
         
             
              it "msgpack bin 16 type" do
         
     | 
| 
       288 
292 
     | 
    
         
             
                MessagePack.unpack([0xc5, 0x00, 0x00].pack('C*')).should == ""
         
     | 
| 
      
 293 
     | 
    
         
            +
                MessagePack.unpack([0xc5, 0x00, 0x00].pack('C*')).encoding.should == Encoding::ASCII_8BIT
         
     | 
| 
       289 
294 
     | 
    
         
             
                MessagePack.unpack([0xc5, 0x00, 0x01].pack('C*') + 'a').should == "a"
         
     | 
| 
       290 
295 
     | 
    
         
             
                MessagePack.unpack([0xc5, 0x00, 0x02].pack('C*') + 'aa').should == "aa"
         
     | 
| 
       291 
296 
     | 
    
         
             
              end
         
     | 
| 
       292 
297 
     | 
    
         | 
| 
       293 
298 
     | 
    
         
             
              it "msgpack bin 32 type" do
         
     | 
| 
       294 
299 
     | 
    
         
             
                MessagePack.unpack([0xc6, 0x00, 0x00, 0x00, 0x00].pack('C*')).should == ""
         
     | 
| 
      
 300 
     | 
    
         
            +
                MessagePack.unpack([0xc6, 0x0, 0x00, 0x00, 0x000].pack('C*')).encoding.should == Encoding::ASCII_8BIT
         
     | 
| 
       295 
301 
     | 
    
         
             
                MessagePack.unpack([0xc6, 0x00, 0x00, 0x00, 0x01].pack('C*') + 'a').should == "a"
         
     | 
| 
       296 
302 
     | 
    
         
             
                MessagePack.unpack([0xc6, 0x00, 0x00, 0x00, 0x02].pack('C*') + 'aa').should == "aa"
         
     | 
| 
       297 
303 
     | 
    
         
             
              end
         
     | 
    
        data/spec/format_spec.rb
    CHANGED
    
    | 
         @@ -83,8 +83,13 @@ describe MessagePack do 
     | 
|
| 
       83 
83 
     | 
    
         
             
                check_raw 1, (1 << 5)-1
         
     | 
| 
       84 
84 
     | 
    
         
             
              end
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
      
 86 
     | 
    
         
            +
              it "raw 8" do
         
     | 
| 
      
 87 
     | 
    
         
            +
                check_raw 2, (1 << 5)
         
     | 
| 
      
 88 
     | 
    
         
            +
                check_raw 2, (1 << 8)-1
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       86 
91 
     | 
    
         
             
              it "raw 16" do
         
     | 
| 
       87 
     | 
    
         
            -
                check_raw 3, (1 <<  
     | 
| 
      
 92 
     | 
    
         
            +
                check_raw 3, (1 << 8)
         
     | 
| 
       88 
93 
     | 
    
         
             
                check_raw 3, (1 << 16)-1
         
     | 
| 
       89 
94 
     | 
    
         
             
              end
         
     | 
| 
       90 
95 
     | 
    
         | 
| 
         @@ -93,6 +98,50 @@ describe MessagePack do 
     | 
|
| 
       93 
98 
     | 
    
         
             
                #check_raw 5, (1 << 32)-1  # memory error
         
     | 
| 
       94 
99 
     | 
    
         
             
              end
         
     | 
| 
       95 
100 
     | 
    
         | 
| 
      
 101 
     | 
    
         
            +
              it "str encoding is UTF_8" do
         
     | 
| 
      
 102 
     | 
    
         
            +
                v = pack_unpack('string'.force_encoding(Encoding::UTF_8))
         
     | 
| 
      
 103 
     | 
    
         
            +
                v.encoding.should == Encoding::UTF_8
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
              it "str transcode US-ASCII" do
         
     | 
| 
      
 107 
     | 
    
         
            +
                v = pack_unpack('string'.force_encoding(Encoding::US_ASCII))
         
     | 
| 
      
 108 
     | 
    
         
            +
                v.encoding.should == Encoding::UTF_8
         
     | 
| 
      
 109 
     | 
    
         
            +
              end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
              it "str transcode UTF-16" do
         
     | 
| 
      
 112 
     | 
    
         
            +
                v = pack_unpack('string'.encode(Encoding::UTF_16))
         
     | 
| 
      
 113 
     | 
    
         
            +
                v.encoding.should == Encoding::UTF_8
         
     | 
| 
      
 114 
     | 
    
         
            +
                v.should == 'string'
         
     | 
| 
      
 115 
     | 
    
         
            +
              end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
              it "str transcode EUC-JP 7bit safe" do
         
     | 
| 
      
 118 
     | 
    
         
            +
                v = pack_unpack('string'.force_encoding(Encoding::EUC_JP))
         
     | 
| 
      
 119 
     | 
    
         
            +
                v.encoding.should == Encoding::UTF_8
         
     | 
| 
      
 120 
     | 
    
         
            +
                v.should == 'string'
         
     | 
| 
      
 121 
     | 
    
         
            +
              end
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
              it "str transcode EUC-JP 7bit unsafe" do
         
     | 
| 
      
 124 
     | 
    
         
            +
                v = pack_unpack([0xa4, 0xa2].pack('C*').force_encoding(Encoding::EUC_JP))
         
     | 
| 
      
 125 
     | 
    
         
            +
                v.encoding.should == Encoding::UTF_8
         
     | 
| 
      
 126 
     | 
    
         
            +
                v.should == "\xE3\x81\x82".force_encoding('UTF-8')
         
     | 
| 
      
 127 
     | 
    
         
            +
              end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
              it "bin 8" do
         
     | 
| 
      
 130 
     | 
    
         
            +
                check_bin 2, (1<<8)-1
         
     | 
| 
      
 131 
     | 
    
         
            +
              end
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
              it "bin 16" do
         
     | 
| 
      
 134 
     | 
    
         
            +
                check_bin 3, (1<<16)-1
         
     | 
| 
      
 135 
     | 
    
         
            +
              end
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
              it "bin 32" do
         
     | 
| 
      
 138 
     | 
    
         
            +
                check_bin 5, (1<<16)
         
     | 
| 
      
 139 
     | 
    
         
            +
              end
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
              it "bin encoding is ASCII_8BIT" do
         
     | 
| 
      
 142 
     | 
    
         
            +
                pack_unpack('string'.force_encoding(Encoding::ASCII_8BIT)).encoding.should == Encoding::ASCII_8BIT
         
     | 
| 
      
 143 
     | 
    
         
            +
              end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
       96 
145 
     | 
    
         
             
              it "fixarray" do
         
     | 
| 
       97 
146 
     | 
    
         
             
                check_array 1, 0
         
     | 
| 
       98 
147 
     | 
    
         
             
                check_array 1, (1 << 4)-1
         
     | 
| 
         @@ -210,9 +259,11 @@ describe MessagePack do 
     | 
|
| 
       210 
259 
     | 
    
         
             
              end
         
     | 
| 
       211 
260 
     | 
    
         | 
| 
       212 
261 
     | 
    
         
             
              def check_raw(overhead, num)
         
     | 
| 
       213 
     | 
    
         
            -
                 
     | 
| 
       214 
     | 
    
         
            -
             
     | 
| 
       215 
     | 
    
         
            -
             
     | 
| 
      
 262 
     | 
    
         
            +
                check num+overhead, (" "*num).force_encoding(Encoding::UTF_8)
         
     | 
| 
      
 263 
     | 
    
         
            +
              end
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
      
 265 
     | 
    
         
            +
              def check_bin(overhead, num)
         
     | 
| 
      
 266 
     | 
    
         
            +
                check num+overhead, (" "*num).force_encoding(Encoding::ASCII_8BIT)
         
     | 
| 
       216 
267 
     | 
    
         
             
              end
         
     | 
| 
       217 
268 
     | 
    
         | 
| 
       218 
269 
     | 
    
         
             
              def check_array(overhead, num)
         
     | 
| 
         @@ -223,5 +274,9 @@ describe MessagePack do 
     | 
|
| 
       223 
274 
     | 
    
         
             
                raw = obj.to_msgpack.to_s
         
     | 
| 
       224 
275 
     | 
    
         
             
                raw.should == buf
         
     | 
| 
       225 
276 
     | 
    
         
             
              end
         
     | 
| 
      
 277 
     | 
    
         
            +
             
     | 
| 
      
 278 
     | 
    
         
            +
              def pack_unpack(obj)
         
     | 
| 
      
 279 
     | 
    
         
            +
                MessagePack.unpack(obj.to_msgpack)
         
     | 
| 
      
 280 
     | 
    
         
            +
              end
         
     | 
| 
       226 
281 
     | 
    
         
             
            end
         
     | 
| 
       227 
282 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: msgpack
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.0pre1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: x86-mingw32
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Sadayuki Furuhashi
         
     | 
| 
         @@ -108,6 +108,7 @@ files: 
     | 
|
| 
       108 
108 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       109 
109 
     | 
    
         
             
            - ".travis.yml"
         
     | 
| 
       110 
110 
     | 
    
         
             
            - ChangeLog
         
     | 
| 
      
 111 
     | 
    
         
            +
            - Dockerfile
         
     | 
| 
       111 
112 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       112 
113 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       113 
114 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
         @@ -120,6 +121,7 @@ files: 
     | 
|
| 
       120 
121 
     | 
    
         
             
            - bench/unpack.rb
         
     | 
| 
       121 
122 
     | 
    
         
             
            - bench/unpack_log.rb
         
     | 
| 
       122 
123 
     | 
    
         
             
            - bench/unpack_log_long.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - cross-build.sh
         
     | 
| 
       123 
125 
     | 
    
         
             
            - doclib/msgpack.rb
         
     | 
| 
       124 
126 
     | 
    
         
             
            - doclib/msgpack/buffer.rb
         
     | 
| 
       125 
127 
     | 
    
         
             
            - doclib/msgpack/core_ext.rb
         
     | 
| 
         @@ -195,9 +197,9 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       195 
197 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       196 
198 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       197 
199 
     | 
    
         
             
              requirements:
         
     | 
| 
       198 
     | 
    
         
            -
              - - " 
     | 
| 
      
 200 
     | 
    
         
            +
              - - ">"
         
     | 
| 
       199 
201 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       200 
     | 
    
         
            -
                  version:  
     | 
| 
      
 202 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
       201 
203 
     | 
    
         
             
            requirements: []
         
     | 
| 
       202 
204 
     | 
    
         
             
            rubyforge_project: msgpack
         
     | 
| 
       203 
205 
     | 
    
         
             
            rubygems_version: 2.4.5
         
     |