See memory of freed result to nullptr
PiperOrigin-RevId: 570410751
This commit is contained in:
parent
d0183b2c70
commit
a72839ef99
|
@ -36,7 +36,9 @@ void CppConvertToCategory(
|
||||||
|
|
||||||
void CppCloseCategory(Category* in) {
|
void CppCloseCategory(Category* in) {
|
||||||
free(in->category_name);
|
free(in->category_name);
|
||||||
|
in->category_name = nullptr;
|
||||||
free(in->display_name);
|
free(in->display_name);
|
||||||
|
in->display_name = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::containers
|
} // namespace mediapipe::tasks::c::components::containers
|
||||||
|
|
|
@ -60,17 +60,20 @@ void CppConvertToClassificationResult(
|
||||||
|
|
||||||
void CppCloseClassificationResult(ClassificationResult* in) {
|
void CppCloseClassificationResult(ClassificationResult* in) {
|
||||||
for (uint32_t i = 0; i < in->classifications_count; ++i) {
|
for (uint32_t i = 0; i < in->classifications_count; ++i) {
|
||||||
auto classification_in = in->classifications[i];
|
auto& classification_in = in->classifications[i];
|
||||||
|
|
||||||
for (uint32_t j = 0; j < classification_in.categories_count; ++j) {
|
for (uint32_t j = 0; j < classification_in.categories_count; ++j) {
|
||||||
CppCloseCategory(&classification_in.categories[j]);
|
CppCloseCategory(&classification_in.categories[j]);
|
||||||
}
|
}
|
||||||
delete[] classification_in.categories;
|
delete[] classification_in.categories;
|
||||||
|
classification_in.categories = nullptr;
|
||||||
|
|
||||||
free(classification_in.head_name);
|
free(classification_in.head_name);
|
||||||
|
classification_in.head_name = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] in->classifications;
|
delete[] in->classifications;
|
||||||
|
in->classifications = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::containers
|
} // namespace mediapipe::tasks::c::components::containers
|
||||||
|
|
|
@ -99,4 +99,20 @@ TEST(ClassificationResultConverterTest,
|
||||||
CppCloseClassificationResult(&c_classification_result);
|
CppCloseClassificationResult(&c_classification_result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(ClassificationResultConverterTest, FreesMemory) {
|
||||||
|
mediapipe::tasks::components::containers::ClassificationResult
|
||||||
|
cpp_classification_result = {
|
||||||
|
/* classifications= */ {{{}, 0, "foo"}},
|
||||||
|
/* timestamp_ms= */ 42,
|
||||||
|
};
|
||||||
|
|
||||||
|
ClassificationResult c_classification_result;
|
||||||
|
CppConvertToClassificationResult(cpp_classification_result,
|
||||||
|
&c_classification_result);
|
||||||
|
EXPECT_NE(c_classification_result.classifications, nullptr);
|
||||||
|
|
||||||
|
CppCloseClassificationResult(&c_classification_result);
|
||||||
|
EXPECT_EQ(c_classification_result.classifications, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace mediapipe::tasks::c::components::containers
|
} // namespace mediapipe::tasks::c::components::containers
|
||||||
|
|
Loading…
Reference in New Issue
Block a user