Skip to content

Commit 88857c7

Browse files
committed
fix CBOR.stream_socket
1 parent 24ba04c commit 88857c7

2 files changed

Lines changed: 5 additions & 9 deletions

File tree

mrblib/stream.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ def stream_file(io, offset = 0, &block)
7171
end
7272

7373
def stream_socket(io, &block)
74-
return StreamDecoder.new(&block) unless block
74+
return enum_for(:stream_socket, io) unless block
7575
buf = ""
76-
while chunk = io.read(4095)
76+
while chunk = io.recv(4095)
7777
buf << chunk
7878
while true
7979
len = doc_end(buf, 0)

src/mrb_cbor.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,7 +1008,7 @@ encode_simple(CborWriter* w, mrb_value obj)
10081008
case MRB_TT_TRUE: b = 0xF5; break;
10091009
default: {
10101010
mrb_state *mrb = w->mrb;
1011-
mrb_raise(w->mrb, E_TYPE_ERROR, "unexpected simple value");
1011+
mrb_raise(mrb, E_TYPE_ERROR, "unexpected simple value");
10121012
}
10131013
}
10141014
cbor_writer_write(w, &b, 1);
@@ -1370,8 +1370,7 @@ skip_cbor_try(mrb_state *mrb, Reader *r)
13701370
{
13711371
if (unlikely(r->p >= r->end)) return FALSE;
13721372

1373-
if (unlikely(r->depth >= CBOR_MAX_DEPTH))
1374-
mrb_raise(mrb, E_RUNTIME_ERROR, "CBOR nesting depth exceeded");
1373+
reader_check_depth(mrb, r);
13751374
r->depth++;
13761375

13771376
uint8_t b = *r->p++;
@@ -1696,9 +1695,6 @@ cbor_lazy_dig(mrb_state *mrb, mrb_value self)
16961695

16971696
if (nkeys == 0) return self;
16981697

1699-
if (unlikely(nkeys > CBOR_MAX_DEPTH / 2))
1700-
mrb_raise(mrb, E_RUNTIME_ERROR, "CBOR#dig nesting too deep");
1701-
17021698
mrb_value current = self;
17031699

17041700
for (mrb_int ki = 0; ki < nkeys; ki++) {
@@ -1753,7 +1749,7 @@ cbor_lazy_dig(mrb_state *mrb, mrb_value self)
17531749

17541750
case 5: {
17551751
mrb_int pairs = cbor_value_to_len(mrb, read_cbor_uint(mrb, &r, r.info));
1756-
mrb_bool key_is_str = mrb_string_p(key);
1752+
const mrb_bool key_is_str = mrb_string_p(key);
17571753
mrb_bool found = FALSE;
17581754

17591755
for (mrb_int i = 0; i < pairs; i++) {

0 commit comments

Comments
 (0)