mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[wpinet] WebSocketSerializer: Fix UB (#5787)
This commit is contained in:
@@ -179,7 +179,13 @@ std::span<const WebSocket::Frame> TrySendFrames(
|
||||
bufs.append(it->data.begin(), it->data.end());
|
||||
}
|
||||
callback(bufs, {});
|
||||
return {&*frameStart, &*frameEnd};
|
||||
#ifdef __clang__
|
||||
// work around clang bug
|
||||
return {frames.data() + (frameStart - frames.begin()),
|
||||
frames.data() + (frameEnd - frames.begin())};
|
||||
#else
|
||||
return {frameStart, frameEnd};
|
||||
#endif
|
||||
} else if (sentBytes < 0) {
|
||||
// error
|
||||
SmallVector<uv::Buffer, 4> bufs;
|
||||
@@ -208,7 +214,13 @@ std::span<const WebSocket::Frame> TrySendFrames(
|
||||
bufs.append(it->data.begin(), it->data.end());
|
||||
}
|
||||
callback(bufs, {});
|
||||
return {&*frameStart, &*frameEnd};
|
||||
#ifdef __clang__
|
||||
// work around clang bug
|
||||
return {frames.data() + (frameStart - frames.begin()),
|
||||
frames.data() + (frameEnd - frames.begin())};
|
||||
#else
|
||||
return {frameStart, frameEnd};
|
||||
#endif
|
||||
}
|
||||
|
||||
// build a list of buffers to send as a normal write:
|
||||
@@ -270,7 +282,13 @@ std::span<const WebSocket::Frame> TrySendFrames(
|
||||
|
||||
WS_DEBUG("Write({})\n", writeBufs.size());
|
||||
stream.Write(writeBufs, req);
|
||||
return {&*frameStart, &*frameEnd};
|
||||
#ifdef __clang__
|
||||
// work around clang bug
|
||||
return {frames.data() + (frameStart - frames.begin()),
|
||||
frames.data() + (frameEnd - frames.begin())};
|
||||
#else
|
||||
return {frameStart, frameEnd};
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user