From 5f53f61121a21459924b2f26d557622842d9c5c3 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Wed, 5 Mar 2014 10:37:14 +0100 Subject: [PATCH] Faster NBT parsing --- src/nbt/NBT.php | 17 ++++++++++------- src/network/raknet/RakNetPacket.php | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/nbt/NBT.php b/src/nbt/NBT.php index 840f7066c..1d1c372f6 100644 --- a/src/nbt/NBT.php +++ b/src/nbt/NBT.php @@ -26,18 +26,21 @@ class NBT implements ArrayAccess{ private $buffer; private $offset; private $endianness; - private $data; - + private $data; + public function get($len){ - if($len < 0){ + if($len <= 0){ $this->offset = strlen($this->buffer) - 1; return ""; - } - if($len === true){ + }elseif($len === true){ return substr($this->buffer, $this->offset); } - $this->offset += $len; - return substr($this->buffer, $this->offset - $len, $len); + + $buffer = b""; + for(; $len > 0; --$len, ++$this->offset){ + $buffer .= @$this->buffer{$this->offset}; + } + return $buffer; } public function put($v){ diff --git a/src/network/raknet/RakNetPacket.php b/src/network/raknet/RakNetPacket.php index bb819eff4..9337409cd 100644 --- a/src/network/raknet/RakNetPacket.php +++ b/src/network/raknet/RakNetPacket.php @@ -31,7 +31,7 @@ class RakNetPacket extends Packet{ public function pid(){ return $this->packetID; } - + protected function get($len){ if($len <= 0){ $this->offset = strlen($this->buffer) - 1;