diff --git a/lib/packets/packet.js b/lib/packets/packet.js index ccf3a8458c..e3c3a562d1 100644 --- a/lib/packets/packet.js +++ b/lib/packets/packet.js @@ -646,43 +646,15 @@ class Packet { } parseFloat(len) { - if (len === null) { - return null; - } - let result = 0; + const start = this.offset; const end = this.offset + len; - let factor = 1; - let pastDot = false; - let charCode = 0; + this.offset += len; + if (len === 0) { return 0; // TODO: assert? exception? } - if (this.buffer[this.offset] === minus) { - this.offset++; - factor = -1; - } - if (this.buffer[this.offset] === plus) { - this.offset++; // just ignore - } - while (this.offset < end) { - charCode = this.buffer[this.offset]; - if (charCode === dot) { - pastDot = true; - this.offset++; - } else if (charCode === exponent || charCode === exponentCapital) { - this.offset++; - const exponentValue = this.parseInt(end - this.offset); - return (result / factor) * Math.pow(10, exponentValue); - } else { - result *= 10; - result += this.buffer[this.offset] - 48; - this.offset++; - if (pastDot) { - factor = factor * 10; - } - } - } - return result / factor; + + return parseFloat(this.buffer.toString('ascii', start, end)); } parseLengthCodedIntNoBigCheck() {