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) { | ||||
|   free(in->category_name); | ||||
|   in->category_name = nullptr; | ||||
|   free(in->display_name); | ||||
|   in->display_name = nullptr; | ||||
| } | ||||
| 
 | ||||
| }  // namespace mediapipe::tasks::c::components::containers
 | ||||
|  |  | |||
|  | @ -60,17 +60,20 @@ void CppConvertToClassificationResult( | |||
| 
 | ||||
| void CppCloseClassificationResult(ClassificationResult* in) { | ||||
|   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) { | ||||
|       CppCloseCategory(&classification_in.categories[j]); | ||||
|     } | ||||
|     delete[] classification_in.categories; | ||||
|     classification_in.categories = nullptr; | ||||
| 
 | ||||
|     free(classification_in.head_name); | ||||
|     classification_in.head_name = nullptr; | ||||
|   } | ||||
| 
 | ||||
|   delete[] in->classifications; | ||||
|   in->classifications = nullptr; | ||||
| } | ||||
| 
 | ||||
| }  // namespace mediapipe::tasks::c::components::containers
 | ||||
|  |  | |||
|  | @ -99,4 +99,20 @@ TEST(ClassificationResultConverterTest, | |||
|   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
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user