msgpack 0.5.1-x86-mingw32 → 0.5.2-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/ChangeLog +6 -0
- data/ext/msgpack/buffer.c +5 -5
- data/ext/msgpack/buffer.h +2 -0
- data/ext/msgpack/extconf.rb +7 -0
- data/ext/msgpack/packer.c +6 -5
- data/ext/msgpack/packer.h +66 -10
- data/ext/msgpack/unpacker.c +7 -7
- data/lib/msgpack/version.rb +1 -1
- metadata +4 -4
data/ChangeLog
CHANGED
data/ext/msgpack/buffer.c
CHANGED
@@ -611,13 +611,13 @@ size_t msgpack_buffer_flush_to_io(msgpack_buffer_t* b, VALUE io, ID write_method
|
|
611
611
|
size_t _msgpack_buffer_feed_from_io(msgpack_buffer_t* b)
|
612
612
|
{
|
613
613
|
if(b->io_buffer == Qnil) {
|
614
|
-
b->io_buffer = rb_funcall(b->io, b->io_partial_read_method, 1,
|
614
|
+
b->io_buffer = rb_funcall(b->io, b->io_partial_read_method, 1, LONG2NUM(b->io_buffer_size));
|
615
615
|
if(b->io_buffer == Qnil) {
|
616
616
|
rb_raise(rb_eEOFError, "IO reached end of file");
|
617
617
|
}
|
618
618
|
StringValue(b->io_buffer);
|
619
619
|
} else {
|
620
|
-
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2,
|
620
|
+
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2, LONG2NUM(b->io_buffer_size), b->io_buffer);
|
621
621
|
if(ret == Qnil) {
|
622
622
|
rb_raise(rb_eEOFError, "IO reached end of file");
|
623
623
|
}
|
@@ -638,7 +638,7 @@ size_t _msgpack_buffer_read_from_io_to_string(msgpack_buffer_t* b, VALUE string,
|
|
638
638
|
{
|
639
639
|
if(RSTRING_LEN(string) == 0) {
|
640
640
|
/* direct read */
|
641
|
-
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2,
|
641
|
+
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2, LONG2NUM(length), string);
|
642
642
|
if(ret == Qnil) {
|
643
643
|
return 0;
|
644
644
|
}
|
@@ -650,7 +650,7 @@ size_t _msgpack_buffer_read_from_io_to_string(msgpack_buffer_t* b, VALUE string,
|
|
650
650
|
b->io_buffer = rb_str_buf_new(0);
|
651
651
|
}
|
652
652
|
|
653
|
-
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2,
|
653
|
+
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2, LONG2NUM(length), b->io_buffer);
|
654
654
|
if(ret == Qnil) {
|
655
655
|
return 0;
|
656
656
|
}
|
@@ -666,7 +666,7 @@ size_t _msgpack_buffer_skip_from_io(msgpack_buffer_t* b, size_t length)
|
|
666
666
|
b->io_buffer = rb_str_buf_new(0);
|
667
667
|
}
|
668
668
|
|
669
|
-
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2,
|
669
|
+
VALUE ret = rb_funcall(b->io, b->io_partial_read_method, 2, LONG2NUM(length), b->io_buffer);
|
670
670
|
if(ret == Qnil) {
|
671
671
|
return 0;
|
672
672
|
}
|
data/ext/msgpack/buffer.h
CHANGED
@@ -92,9 +92,11 @@ struct msgpack_buffer_t {
|
|
92
92
|
msgpack_buffer_chunk_t* head;
|
93
93
|
msgpack_buffer_chunk_t* free_list;
|
94
94
|
|
95
|
+
#ifndef DISABLE_RMEM
|
95
96
|
char* rmem_last;
|
96
97
|
char* rmem_end;
|
97
98
|
void** rmem_owner;
|
99
|
+
#endif
|
98
100
|
|
99
101
|
union msgpack_buffer_cast_block_t cast_block;
|
100
102
|
|
data/ext/msgpack/extconf.rb
CHANGED
@@ -10,6 +10,13 @@ $CFLAGS << %[ -I.. -Wall -O3 -g -std=c99]
|
|
10
10
|
#$CFLAGS << %[ -DDISABLE_BUFFER_READ_REFERENCE_OPTIMIZE]
|
11
11
|
#$CFLAGS << %[ -DDISABLE_BUFFER_READ_TO_S_OPTIMIZE]
|
12
12
|
|
13
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
14
|
+
# msgpack-ruby doesn't modify data came from RSTRING_PTR(str)
|
15
|
+
$CFLAGS << %[ -DRSTRING_NOT_MODIFIED]
|
16
|
+
# Rubinius C extensions don't grab GVL while rmem is not thread safe
|
17
|
+
$CFLAGS << %[ -DDISABLE_RMEM]
|
18
|
+
end
|
19
|
+
|
13
20
|
if warnflags = CONFIG['warnflags']
|
14
21
|
warnflags.slice!(/ -Wdeclaration-after-statement/)
|
15
22
|
end
|
data/ext/msgpack/packer.c
CHANGED
@@ -73,9 +73,9 @@ void msgpack_packer_reset(msgpack_packer_t* pk)
|
|
73
73
|
|
74
74
|
void msgpack_packer_write_array_value(msgpack_packer_t* pk, VALUE v)
|
75
75
|
{
|
76
|
-
|
76
|
+
/* actual return type of RARRAY_LEN is long */
|
77
|
+
unsigned long len = RARRAY_LEN(v);
|
77
78
|
if(len > 0xffffffffUL) {
|
78
|
-
// TODO rb_eArgError?
|
79
79
|
rb_raise(rb_eArgError, "size of array is too long to pack: %lu bytes should be <= %lu", len, 0xffffffffUL);
|
80
80
|
}
|
81
81
|
unsigned int len32 = (unsigned int)len;
|
@@ -101,10 +101,11 @@ static int write_hash_foreach(VALUE key, VALUE value, VALUE pk_value)
|
|
101
101
|
|
102
102
|
void msgpack_packer_write_hash_value(msgpack_packer_t* pk, VALUE v)
|
103
103
|
{
|
104
|
-
|
104
|
+
/* actual return type of RHASH_SIZE is long (if SIZEOF_LONG == SIZEOF_VOIDP
|
105
|
+
* or long long (if SIZEOF_LONG_LONG == SIZEOF_VOIDP. See st.h. */
|
106
|
+
unsigned long len = RHASH_SIZE(v);
|
105
107
|
if(len > 0xffffffffUL) {
|
106
|
-
|
107
|
-
rb_raise(rb_eArgError, "size of array is too long to pack: %lu bytes should be <= %lu", len, 0xffffffffUL);
|
108
|
+
rb_raise(rb_eArgError, "size of array is too long to pack: %ld bytes should be <= %lu", len, 0xffffffffUL);
|
108
109
|
}
|
109
110
|
unsigned int len32 = (unsigned int)len;
|
110
111
|
msgpack_packer_write_map_header(pk, len32);
|
data/ext/msgpack/packer.h
CHANGED
@@ -145,33 +145,56 @@ static inline void _msgpack_packer_write_int64(msgpack_packer_t* pk, int64_t v)
|
|
145
145
|
msgpack_buffer_write_byte_and_data(PACKER_BUFFER_(pk), 0xd3, (const void*)&be, 8);
|
146
146
|
}
|
147
147
|
|
148
|
-
static inline void
|
148
|
+
static inline void _msgpack_packer_write_long32(msgpack_packer_t* pk, long v)
|
149
149
|
{
|
150
150
|
if(v < -0x20L) {
|
151
151
|
if(v < -0x8000L) {
|
152
|
-
|
152
|
+
_msgpack_packer_write_int32(pk, (int32_t) v);
|
153
|
+
} else if(v < -0x80L) {
|
154
|
+
_msgpack_packer_write_int16(pk, (int16_t) v);
|
155
|
+
} else {
|
156
|
+
_msgpack_packer_write_int8(pk, (int8_t) v);
|
157
|
+
}
|
158
|
+
} else if(v <= 0x7fL) {
|
159
|
+
_msgpack_packer_write_fixint(pk, (int8_t) v);
|
160
|
+
} else {
|
161
|
+
if(v <= 0xffL) {
|
162
|
+
_msgpack_packer_write_uint8(pk, (uint8_t) v);
|
163
|
+
} else if(v <= 0xffffL) {
|
164
|
+
_msgpack_packer_write_uint16(pk, (uint16_t) v);
|
165
|
+
} else {
|
166
|
+
_msgpack_packer_write_uint32(pk, (uint32_t) v);
|
167
|
+
}
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
static inline void _msgpack_packer_write_long_long64(msgpack_packer_t* pk, long long v)
|
172
|
+
{
|
173
|
+
if(v < -0x20LL) {
|
174
|
+
if(v < -0x8000LL) {
|
175
|
+
if(v < -0x80000000LL) {
|
153
176
|
_msgpack_packer_write_int64(pk, (int64_t) v);
|
154
177
|
} else {
|
155
178
|
_msgpack_packer_write_int32(pk, (int32_t) v);
|
156
179
|
}
|
157
180
|
} else {
|
158
|
-
if(v < -
|
181
|
+
if(v < -0x80LL) {
|
159
182
|
_msgpack_packer_write_int16(pk, (int16_t) v);
|
160
183
|
} else {
|
161
184
|
_msgpack_packer_write_int8(pk, (int8_t) v);
|
162
185
|
}
|
163
186
|
}
|
164
|
-
} else if(v <=
|
187
|
+
} else if(v <= 0x7fLL) {
|
165
188
|
_msgpack_packer_write_fixint(pk, (int8_t) v);
|
166
189
|
} else {
|
167
|
-
if(v <=
|
168
|
-
if(v <=
|
190
|
+
if(v <= 0xffffLL) {
|
191
|
+
if(v <= 0xffLL) {
|
169
192
|
_msgpack_packer_write_uint8(pk, (uint8_t) v);
|
170
193
|
} else {
|
171
194
|
_msgpack_packer_write_uint16(pk, (uint16_t) v);
|
172
195
|
}
|
173
196
|
} else {
|
174
|
-
if(v <=
|
197
|
+
if(v <= 0xffffffffLL) {
|
175
198
|
_msgpack_packer_write_uint32(pk, (uint32_t) v);
|
176
199
|
} else {
|
177
200
|
_msgpack_packer_write_uint64(pk, (uint64_t) v);
|
@@ -180,6 +203,37 @@ static inline void msgpack_packer_write_long(msgpack_packer_t* pk, long v)
|
|
180
203
|
}
|
181
204
|
}
|
182
205
|
|
206
|
+
static inline void msgpack_packer_write_long(msgpack_packer_t* pk, long v)
|
207
|
+
{
|
208
|
+
#if defined(SIZEOF_LONG)
|
209
|
+
# if SIZEOF_LONG <= 4
|
210
|
+
_msgpack_packer_write_long32(pk, v);
|
211
|
+
# else
|
212
|
+
_msgpack_packer_write_long_long64(pk, v);
|
213
|
+
# endif
|
214
|
+
|
215
|
+
#elif defined(LONG_MAX)
|
216
|
+
# if LONG_MAX <= 0x7fffffffL
|
217
|
+
_msgpack_packer_write_long32(pk, v);
|
218
|
+
# else
|
219
|
+
_msgpack_packer_write_long_long64(pk, v);
|
220
|
+
# endif
|
221
|
+
|
222
|
+
#else
|
223
|
+
if(sizeof(long) <= 4) {
|
224
|
+
_msgpack_packer_write_long32(pk, v);
|
225
|
+
} else {
|
226
|
+
_msgpack_packer_write_long_long64(pk, v);
|
227
|
+
}
|
228
|
+
#endif
|
229
|
+
}
|
230
|
+
|
231
|
+
static inline void msgpack_packer_write_long_long(msgpack_packer_t* pk, long long v)
|
232
|
+
{
|
233
|
+
/* assuming sizeof(long long) == 8 */
|
234
|
+
_msgpack_packer_write_long_long64(pk, v);
|
235
|
+
}
|
236
|
+
|
183
237
|
static inline void msgpack_packer_write_u64(msgpack_packer_t* pk, uint64_t v)
|
184
238
|
{
|
185
239
|
if(v <= 0xffULL) {
|
@@ -268,7 +322,8 @@ void _msgpack_packer_write_string_to_io(msgpack_packer_t* pk, VALUE string);
|
|
268
322
|
static inline void msgpack_packer_write_string_value(msgpack_packer_t* pk, VALUE v)
|
269
323
|
{
|
270
324
|
/* TODO encoding conversion? */
|
271
|
-
|
325
|
+
/* actual return type of RSTRING_LEN is long */
|
326
|
+
unsigned long len = RSTRING_LEN(v);
|
272
327
|
if(len > 0xffffffffUL) {
|
273
328
|
// TODO rb_eArgError?
|
274
329
|
rb_raise(rb_eArgError, "size of string is too long to pack: %lu bytes should be <= %lu", len, 0xffffffffUL);
|
@@ -280,7 +335,8 @@ static inline void msgpack_packer_write_string_value(msgpack_packer_t* pk, VALUE
|
|
280
335
|
static inline void msgpack_packer_write_symbol_value(msgpack_packer_t* pk, VALUE v)
|
281
336
|
{
|
282
337
|
const char* name = rb_id2name(SYM2ID(v));
|
283
|
-
|
338
|
+
/* actual return type of strlen is size_t */
|
339
|
+
unsigned long len = strlen(name);
|
284
340
|
if(len > 0xffffffffUL) {
|
285
341
|
// TODO rb_eArgError?
|
286
342
|
rb_raise(rb_eArgError, "size of symbol is too long to pack: %lu bytes should be <= %lu", len, 0xffffffffUL);
|
@@ -303,7 +359,7 @@ static inline void msgpack_packer_write_bignum_value(msgpack_packer_t* pk, VALUE
|
|
303
359
|
if(RBIGNUM_POSITIVE_P(v)) {
|
304
360
|
msgpack_packer_write_u64(pk, rb_big2ull(v));
|
305
361
|
} else {
|
306
|
-
|
362
|
+
msgpack_packer_write_long_long(pk, rb_big2ll(v));
|
307
363
|
}
|
308
364
|
}
|
309
365
|
|
data/ext/msgpack/unpacker.c
CHANGED
@@ -251,10 +251,10 @@ static int read_primitive(msgpack_unpacker_t* uk)
|
|
251
251
|
|
252
252
|
SWITCH_RANGE_BEGIN(b)
|
253
253
|
SWITCH_RANGE(b, 0x00, 0x7f) // Positive Fixnum
|
254
|
-
return object_complete(uk,
|
254
|
+
return object_complete(uk, INT2NUM(b));
|
255
255
|
|
256
256
|
SWITCH_RANGE(b, 0xe0, 0xff) // Negative Fixnum
|
257
|
-
return object_complete(uk,
|
257
|
+
return object_complete(uk, INT2NUM((int8_t)b));
|
258
258
|
|
259
259
|
SWITCH_RANGE(b, 0xa0, 0xbf) // FixRaw
|
260
260
|
int count = b & 0x1f;
|
@@ -317,14 +317,14 @@ static int read_primitive(msgpack_unpacker_t* uk)
|
|
317
317
|
{
|
318
318
|
READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 1);
|
319
319
|
uint8_t u8 = cb->u8;
|
320
|
-
return object_complete(uk,
|
320
|
+
return object_complete(uk, INT2NUM((int)u8));
|
321
321
|
}
|
322
322
|
|
323
323
|
case 0xcd: // unsigned int 16
|
324
324
|
{
|
325
325
|
READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 2);
|
326
326
|
uint16_t u16 = _msgpack_be16(cb->u16);
|
327
|
-
return object_complete(uk,
|
327
|
+
return object_complete(uk, INT2NUM((int)u16));
|
328
328
|
}
|
329
329
|
|
330
330
|
case 0xce: // unsigned int 32
|
@@ -345,21 +345,21 @@ static int read_primitive(msgpack_unpacker_t* uk)
|
|
345
345
|
{
|
346
346
|
READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 1);
|
347
347
|
int8_t i8 = cb->i8;
|
348
|
-
return object_complete(uk,
|
348
|
+
return object_complete(uk, INT2NUM((int)i8));
|
349
349
|
}
|
350
350
|
|
351
351
|
case 0xd1: // signed int 16
|
352
352
|
{
|
353
353
|
READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 2);
|
354
354
|
int16_t i16 = _msgpack_be16(cb->i16);
|
355
|
-
return object_complete(uk,
|
355
|
+
return object_complete(uk, INT2NUM((int)i16));
|
356
356
|
}
|
357
357
|
|
358
358
|
case 0xd2: // signed int 32
|
359
359
|
{
|
360
360
|
READ_CAST_BLOCK_OR_RETURN_EOF(cb, uk, 4);
|
361
361
|
int32_t i32 = _msgpack_be32(cb->i32);
|
362
|
-
return object_complete(uk,
|
362
|
+
return object_complete(uk, LONG2NUM((long)i32));
|
363
363
|
}
|
364
364
|
|
365
365
|
case 0xd3: // signed int 64
|
data/lib/msgpack/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: msgpack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 2
|
10
|
+
version: 0.5.2
|
11
11
|
platform: x86-mingw32
|
12
12
|
authors:
|
13
13
|
- FURUHASHI Sadayuki
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-02-07 00:00:00 +09:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|