diff --git a/src/Discord/Helpers/Buffer.php b/src/Discord/Helpers/Buffer.php index 4531aed4b..22411bb20 100644 --- a/src/Discord/Helpers/Buffer.php +++ b/src/Discord/Helpers/Buffer.php @@ -22,19 +22,12 @@ */ class Buffer extends EventEmitter implements WritableStreamInterface { - /** - * Pointer to the head of the buffer. - * - * @var int - */ - private $readPointer = 0; - /** * Internal buffer. * - * @var char[] + * @var string */ - private $buffer = []; + private $buffer = ''; /** * Array of deferred reads waiting to @@ -73,9 +66,7 @@ public function write($data): bool return false; } - for ($i = 0; $i < strlen((string) $data); $i++) { - $this->buffer[] = $data[$i]; - } + $this->buffer .= (string) $data; foreach ($this->reads as $key => [$deferred, $length]) { if (($output = $this->readRaw($length)) !== false) { @@ -98,12 +89,9 @@ public function write($data): bool */ private function readRaw(int $length) { - if ((count($this->buffer) - $this->readPointer) >= $length) { - $output = ''; - - for ($i = 0; $i < $length; $i++) { - $output .= $this->buffer[$this->readPointer++]; - } + if (strlen($this->buffer) >= $length) { + $output = substr($this->buffer, 0, $length); + $this->buffer = substr($this->buffer, $length); return $output; } @@ -217,7 +205,6 @@ public function close(): void $this->buffer = []; $this->closed = true; - $this->readPointer = 0; $this->emit('close'); } }