summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2015-10-21 16:52:43 -0300
committerJuan Linietsky <reduzio@gmail.com>2015-10-21 16:52:43 -0300
commit35959f9c5a314effc9a442931baccec2408b8ece (patch)
tree22375896183f8ce7821bba81a20eeac5e124dc1d /core
parentb59c86f6f953ce6957bccbcc1ec6f3ce4c55572d (diff)
downloadredot-engine-35959f9c5a314effc9a442931baccec2408b8ece.tar.gz
-fixes to ring buffer (fixes network error)
-fixes to invalid disabling of commands on scene tree dock
Diffstat (limited to 'core')
-rw-r--r--core/io/marshalls.cpp5
-rw-r--r--core/io/packet_peer.cpp3
-rw-r--r--core/ring_buffer.h8
3 files changed, 9 insertions, 7 deletions
diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp
index 1e76e2b4b2..62ccd81489 100644
--- a/core/io/marshalls.cpp
+++ b/core/io/marshalls.cpp
@@ -36,7 +36,10 @@ Error decode_variant(Variant& r_variant,const uint8_t *p_buffer, int p_len,int *
const uint8_t * buf=p_buffer;
int len=p_len;
- ERR_FAIL_COND_V(len<4,ERR_INVALID_DATA);
+ if (len<4) {
+
+ ERR_FAIL_COND_V(len<4,ERR_INVALID_DATA);
+ }
uint32_t type=decode_uint32(buf);
diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp
index 875cace368..f6d526b512 100644
--- a/core/io/packet_peer.cpp
+++ b/core/io/packet_peer.cpp
@@ -156,7 +156,6 @@ Error PacketPeerStream::_poll_buffer() const {
Error err = peer->get_partial_data(&temp_buffer[0], ring_buffer.space_left(), read);
if (err)
return err;
-
if (read==0)
return OK;
@@ -202,7 +201,7 @@ Error PacketPeerStream::get_packet(const uint8_t **r_buffer,int &r_buffer_size)
uint8_t lbuf[4];
ring_buffer.copy(lbuf,0,4);
remaining-=4;
- uint32_t len = decode_uint32(lbuf);
+ uint32_t len = decode_uint32(lbuf);
ERR_FAIL_COND_V(remaining<(int)len,ERR_UNAVAILABLE);
ring_buffer.read(lbuf,4); //get rid of first 4 bytes
diff --git a/core/ring_buffer.h b/core/ring_buffer.h
index de33de0c76..3cf9cf9064 100644
--- a/core/ring_buffer.h
+++ b/core/ring_buffer.h
@@ -141,15 +141,15 @@ public:
inline int space_left() {
int left = read_pos - write_pos;
if (left < 0) {
- return size() + left;
+ return size() + left - 1;
};
if (left == 0) {
- return size();
+ return size()-1;
};
- return left;
+ return left -1;
};
inline int data_left() {
- return size() - space_left();
+ return size() - space_left() - 1;
};
inline int size() {