From ba38da18f6d5eb7ede4cd0a135c3b5b5d6681def Mon Sep 17 00:00:00 2001 From: Tae-Young Chung Date: Tue, 24 May 2016 14:16:35 +0900 Subject: [PATCH] Fixed latent memory leak issue Change-Id: Icb565007c63f9e2b9d8d2b5ce281a3476973ea43 Signed-off-by: Tae-Young Chung --- mv_face/face/src/mv_face_open.cpp | 15 +++++++++------ mv_image/image/src/Tracking/AsyncTracker.cpp | 4 +++- packaging/capi-media-vision.spec | 4 ++-- test/testsuites/face/face_test_suite.c | 3 +++ 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/mv_face/face/src/mv_face_open.cpp b/mv_face/face/src/mv_face_open.cpp index 917924e..07e07df 100644 --- a/mv_face/face/src/mv_face_open.cpp +++ b/mv_face/face/src/mv_face_open.cpp @@ -726,13 +726,16 @@ int mv_face_recognition_model_query_labels_open( const std::set& learnedLabels = pRecModel->getFaceLabels(); *number_of_labels = learnedLabels.size(); - (*labels) = (int*)malloc(sizeof(int) * (*number_of_labels)); - std::set::const_iterator it = learnedLabels.begin(); - int i = 0; - for (; it != learnedLabels.end(); ++it) { - (*labels)[i] = *it; - ++i; + if ((*number_of_labels)) { + (*labels) = (int*)malloc(sizeof(int) * (*number_of_labels)); + + std::set::const_iterator it = learnedLabels.begin(); + int i = 0; + for (; it != learnedLabels.end(); ++it) { + (*labels)[i] = *it; + ++i; + } } LOGD("List of the labels learned by the recognition model has been retrieved"); diff --git a/mv_image/image/src/Tracking/AsyncTracker.cpp b/mv_image/image/src/Tracking/AsyncTracker.cpp index 5ae18ae..389fc4b 100644 --- a/mv_image/image/src/Tracking/AsyncTracker.cpp +++ b/mv_image/image/src/Tracking/AsyncTracker.cpp @@ -78,8 +78,10 @@ bool AsyncTracker::track( const int err = pthread_create(&m_thread, NULL, asyncTrack, this); - if (0 == err) + if (0 == err) { + pthread_join(m_thread, NULL); return getResult(result); + } pthread_spin_lock(&m_isRunGuard); m_isRun = false; diff --git a/packaging/capi-media-vision.spec b/packaging/capi-media-vision.spec index c9c241a..12729c8 100644 --- a/packaging/capi-media-vision.spec +++ b/packaging/capi-media-vision.spec @@ -1,7 +1,7 @@ Name: capi-media-vision Summary: Media Vision library for Tizen Native API -Version: 0.3.17 -Release: 1 +Version: 0.3.18 +Release: 0 Group: Multimedia/Framework License: Apache-2.0 and BSD-2.0 Source0: %{name}-%{version}.tar.gz diff --git a/test/testsuites/face/face_test_suite.c b/test/testsuites/face/face_test_suite.c index aceb9d0..5cfd431 100644 --- a/test/testsuites/face/face_test_suite.c +++ b/test/testsuites/face/face_test_suite.c @@ -1358,6 +1358,7 @@ int perform_mv_face_tracking_model_prepare(mv_face_tracking_model_h model) err = load_mv_source_from_file(init_frame_file_name, preparation_frame); free(init_frame_file_name); + init_frame_file_name = NULL; if (MEDIA_VISION_ERROR_NONE != err) { printf(TEXT_RED "ERROR: Errors were occurred during preparation " @@ -1451,6 +1452,8 @@ int perform_mv_face_tracking_model_prepare(mv_face_tracking_model_h model) "source! Error code: %i\n" TEXT_RESET, err2); } + mv_destroy_engine_config(eng_config); + eng_config = NULL; return err; } -- 2.7.4