Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 6797fda

Browse files
committed
Fix StandardMessageCodec test leaks
1 parent 9bdcd8a commit 6797fda

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

shell/platform/common/client_wrapper/standard_codec.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,8 @@ const StandardMessageCodec& StandardMessageCodec::GetInstance(
295295
if (!serializer) {
296296
serializer = &StandardCodecSerializer::GetInstance();
297297
}
298-
auto* sInstances = new std::map<const StandardCodecSerializer*,
299-
std::unique_ptr<StandardMessageCodec>>;
298+
static auto* sInstances = new std::map<const StandardCodecSerializer*,
299+
std::unique_ptr<StandardMessageCodec>>;
300300
auto it = sInstances->find(serializer);
301301
if (it == sInstances->end()) {
302302
// Uses new due to private constructor (to prevent API clients from
@@ -342,8 +342,8 @@ const StandardMethodCodec& StandardMethodCodec::GetInstance(
342342
if (!serializer) {
343343
serializer = &StandardCodecSerializer::GetInstance();
344344
}
345-
auto* sInstances = new std::map<const StandardCodecSerializer*,
346-
std::unique_ptr<StandardMethodCodec>>;
345+
static auto* sInstances = new std::map<const StandardCodecSerializer*,
346+
std::unique_ptr<StandardMethodCodec>>;
347347
auto it = sInstances->find(serializer);
348348
if (it == sInstances->end()) {
349349
// Uses new due to private constructor (to prevent API clients from

shell/platform/common/client_wrapper/standard_message_codec_unittests.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ static void CheckEncodeDecodeWithEncodePrefix(
7676
EXPECT_EQ(value, *decoded);
7777
}
7878

79+
TEST(StandardMessageCodec, GetInstanceCachesInstance) {
80+
const StandardMessageCodec& codecA =
81+
StandardMessageCodec::GetInstance(nullptr);
82+
const StandardMessageCodec& codecB =
83+
StandardMessageCodec::GetInstance(nullptr);
84+
EXPECT_EQ(&codecA, &codecB);
85+
}
86+
7987
TEST(StandardMessageCodec, CanEncodeAndDecodeNull) {
8088
std::vector<uint8_t> bytes = {0x00};
8189
CheckEncodeDecode(EncodableValue(), bytes);

shell/platform/common/client_wrapper/standard_method_codec_unittests.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ bool MethodCallsAreEqual(const MethodCall<>& a, const MethodCall<>& b) {
3232

3333
} // namespace
3434

35+
TEST(StandardMethodCodec, GetInstanceCachesInstance) {
36+
const StandardMethodCodec& codecA = StandardMethodCodec::GetInstance(nullptr);
37+
const StandardMethodCodec& codecB = StandardMethodCodec::GetInstance(nullptr);
38+
EXPECT_EQ(&codecA, &codecB);
39+
}
40+
3541
TEST(StandardMethodCodec, HandlesMethodCallsWithNullArguments) {
3642
const StandardMethodCodec& codec = StandardMethodCodec::GetInstance();
3743
MethodCall<> call("hello", nullptr);

0 commit comments

Comments
 (0)