Skip to content

Commit 1282102

Browse files
afrindmeta-codesync[bot]
authored andcommitted
Add default member initializers to MoQTypes structs
Summary: Initialize all previously-uninitialized struct members in MoQTypes.h with explicit default values to silence cppcoreguidelines-pro-type-member-init warnings and avoid undefined behavior. Also fix TrackNamespace constructor to take const-ref parameters and remove stray semicolon after copyFrom. Reviewed By: sandarsh Differential Revision: D96136877 fbshipit-source-id: 7f2ed028e9261d9c6358aece9a25899ed39462a3
1 parent 70001c9 commit 1282102

2 files changed

Lines changed: 25 additions & 23 deletions

File tree

moxygen/MoQTypes.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ std::string AbsoluteLocation::describe() const {
106106
return folly::to<std::string>("{", group, ",", object, "}");
107107
}
108108

109-
TrackNamespace::TrackNamespace(std::string tns, std::string delimiter) {
109+
TrackNamespace::TrackNamespace(
110+
const std::string& tns,
111+
const std::string& delimiter) {
110112
folly::split(delimiter, tns, trackNamespace);
111113
}
112114

moxygen/MoQTypes.h

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ enum class AliasType : uint8_t {
290290
};
291291

292292
struct AuthToken {
293-
uint64_t tokenType;
293+
uint64_t tokenType{0};
294294
std::string tokenValue;
295295
std::optional<uint64_t> alias;
296296
// Set alias to one of these constants when sending an AuthToken parameter
@@ -660,8 +660,8 @@ std::ostream& operator<<(std::ostream& os, RequestID id);
660660
struct Extension {
661661
// Even type => holds value in intValue
662662
// Odd type => holds value in arrayValue
663-
uint64_t type;
664-
uint64_t intValue;
663+
uint64_t type{0};
664+
uint64_t intValue{0};
665665
std::unique_ptr<folly::IOBuf> arrayValue;
666666

667667
Extension() noexcept : Extension(0, 0) {}
@@ -709,7 +709,7 @@ struct Extension {
709709
type = other.type;
710710
intValue = other.intValue;
711711
arrayValue = other.arrayValue ? other.arrayValue->clone() : nullptr;
712-
};
712+
}
713713
void moveFrom(Extension&& other) {
714714
type = other.type;
715715
intValue = other.intValue;
@@ -830,9 +830,9 @@ struct ObjectHeader {
830830
status(ObjectStatus::NORMAL),
831831
extensions(std::move(extensionsIn)),
832832
length(lengthIn) {}
833-
uint64_t group;
833+
uint64_t group{0};
834834
uint64_t subgroup{0}; // meaningless for Datagram
835-
uint64_t id;
835+
uint64_t id{0};
836836
std::optional<uint8_t> priority{kDefaultPriority};
837837
ObjectStatus status{ObjectStatus::NORMAL};
838838
Extensions extensions;
@@ -869,7 +869,7 @@ struct TrackNamespace {
869869
explicit TrackNamespace(std::vector<std::string> tns) {
870870
trackNamespace = std::move(tns);
871871
}
872-
explicit TrackNamespace(std::string tns, std::string delimiter);
872+
explicit TrackNamespace(const std::string& tns, const std::string& delimiter);
873873

874874
bool operator==(const TrackNamespace& other) const {
875875
return trackNamespace == other.trackNamespace;
@@ -982,11 +982,11 @@ struct SubscribeRequest {
982982
RequestID requestID;
983983
FullTrackName fullTrackName;
984984
uint8_t priority{kDefaultPriority};
985-
GroupOrder groupOrder;
985+
GroupOrder groupOrder{GroupOrder::Default};
986986
bool forward{true};
987-
LocationType locType;
987+
LocationType locType{LocationType::LargestObject};
988988
std::optional<AbsoluteLocation> start;
989-
uint64_t endGroup;
989+
uint64_t endGroup{0};
990990
TrackRequestParameters params{FrameType::SUBSCRIBE};
991991
};
992992

@@ -1008,8 +1008,8 @@ using SubscribeUpdate = RequestUpdate;
10081008
struct SubscribeOk {
10091009
RequestID requestID;
10101010
TrackAlias trackAlias;
1011-
std::chrono::milliseconds expires;
1012-
GroupOrder groupOrder;
1011+
std::chrono::milliseconds expires{std::chrono::milliseconds(0)};
1012+
GroupOrder groupOrder{GroupOrder::OldestFirst};
10131013
// context exists is inferred from presence of largest
10141014
std::optional<AbsoluteLocation> largest;
10151015
Extensions extensions; // Draft 16+
@@ -1033,19 +1033,19 @@ struct PublishRequest {
10331033
RequestID requestID{0};
10341034
FullTrackName fullTrackName;
10351035
TrackAlias trackAlias{0};
1036-
GroupOrder groupOrder{GroupOrder::Default};
1036+
GroupOrder groupOrder{GroupOrder::OldestFirst};
10371037
std::optional<AbsoluteLocation> largest;
1038-
bool forward{true};
1038+
bool forward{false};
10391039
Extensions extensions; // Draft 16+
10401040
TrackRequestParameters params{FrameType::PUBLISH};
10411041
};
10421042

10431043
struct PublishOk {
10441044
RequestID requestID;
1045-
bool forward;
1046-
uint8_t subscriberPriority;
1047-
GroupOrder groupOrder;
1048-
LocationType locType;
1045+
bool forward{true};
1046+
uint8_t subscriberPriority{kDefaultPriority};
1047+
GroupOrder groupOrder{GroupOrder::OldestFirst};
1048+
LocationType locType{LocationType::LargestObject};
10491049
std::optional<AbsoluteLocation> start;
10501050
std::optional<uint64_t> endGroup;
10511051
TrackRequestParameters params{FrameType::PUBLISH_OK};
@@ -1080,8 +1080,8 @@ using TrackStatus = SubscribeRequest;
10801080
struct TrackStatusOk {
10811081
RequestID requestID;
10821082
TrackAlias trackAlias;
1083-
std::chrono::milliseconds expires{};
1084-
GroupOrder groupOrder{};
1083+
std::chrono::milliseconds expires{std::chrono::milliseconds(0)};
1084+
GroupOrder groupOrder{GroupOrder::OldestFirst};
10851085
// context exists is inferred from presence of largest
10861086
std::optional<AbsoluteLocation> largest;
10871087
TrackRequestParameters params{FrameType::REQUEST_OK};
@@ -1174,8 +1174,8 @@ struct FetchCancel {
11741174

11751175
struct FetchOk {
11761176
RequestID requestID;
1177-
GroupOrder groupOrder;
1178-
uint8_t endOfTrack;
1177+
GroupOrder groupOrder{GroupOrder::OldestFirst};
1178+
uint8_t endOfTrack{0};
11791179
AbsoluteLocation endLocation;
11801180
Extensions extensions; // Draft 16+
11811181
TrackRequestParameters params{FrameType::FETCH_OK};

0 commit comments

Comments
 (0)