Loading...
lsl/PVLEInt64.cpp dyld-1162 dyld-1335
--- dyld/dyld-1162/lsl/PVLEInt64.cpp
+++ dyld/dyld-1335/lsl/PVLEInt64.cpp
@@ -47,32 +47,27 @@
     std::copy(&valueBytes[0], &valueBytes[bytes], std::back_inserter(data));
 }
 
-uint64_t readPVLEUInt64(std::span<std::byte>& data) {
-    uint64_t result = 0;
-    contract(data.size() != 0);
-    const uint8_t additionalByteCount   = std::countr_zero((uint8_t)data[0]);
+bool readPVLEUInt64(std::span<std::byte>& data, uint64_t& result) {
+    result = 0;
+    if (data.size() == 0) {
+        return false;
+    }
+    const uint8_t additionalByteCount = std::countr_zero((uint8_t)data[0]);
+    if (data.size() < additionalByteCount+1) {
+        return false;
+    }
     if (additionalByteCount == 8) {
-        std::copy(&data[1], &data[9], (std::byte*)&result);
+        std::copy(data.begin()+1, data.begin()+9, (std::byte*)&result);
         data = data.last(data.size()-9);
-        return result;
+        return true;
     }
-    contract(data.size() >= 1+additionalByteCount);
     const uint8_t extraBitCount     = 8 - (additionalByteCount+1);
     const uint8_t extraBits         = (((uint8_t)(data[0]))>>(additionalByteCount+1)) & ((1<<extraBitCount)-1);
-    std::copy(&data[1], &data[additionalByteCount+1], (std::byte*)&result);
+    std::copy(data.begin()+1, data.begin()+additionalByteCount+1, (std::byte*)&result);
     result <<= extraBitCount;
     result |= extraBits;
     data = data.last(data.size()-(additionalByteCount+1));
-    return result;
-}
-
-void emitPVLEInt64(int64_t value, Vector<std::byte>& data) {
-    emitPVLEUInt64((value >> 63) ^ (value << 1), data);
-}
-
-int64_t readPVLEInt64(std::span<std::byte>& data) {
-    uint64_t value = readPVLEUInt64(data);
-    return ((value & 1) ? (value >> 1) ^ -1 : (value >> 1));
+    return true;
 }
 
 };