diff options
author | Tae-Young Chung <ty83.chung@samsung.com> | 2017-09-08 17:54:57 +0900 |
---|---|---|
committer | Tae-Young Chung <ty83.chung@samsung.com> | 2017-09-11 06:43:54 +0000 |
commit | 66ced45743e49f562c7fd2457830f9aaec4a3f19 (patch) | |
tree | cb62ca256392e0e507453eeb0f855ad57e1c8d3b | |
parent | 27e57e1845545278d32f98c3a44ef20d2177d216 (diff) | |
download | mediavision-66ced45743e49f562c7fd2457830f9aaec4a3f19.tar.gz mediavision-66ced45743e49f562c7fd2457830f9aaec4a3f19.tar.bz2 mediavision-66ced45743e49f562c7fd2457830f9aaec4a3f19.zip |
Replace readdir() with readdir_r() and add cv::exception handlingsubmit/tizen_4.0/20170911.065127
1. Replace readdir() with readdir_r() because of unguaranteed thread safety of readdir()
2. Add try-catch when cvtcolor is called. If exception might be thrown, *_INVALID_OPERATION
would be returned. Then, testsuite can handle the error case.
Change-Id: Id6ef3455ff5e5e37be8e91cf1c7af817093e7d48
Signed-off-by: Tae-Young Chung <ty83.chung@samsung.com>
(cherry picked from commit 68ea52fcc93936cb059d57240a92102ec65919cc)
-rw-r--r-- | packaging/capi-media-vision.spec | 2 | ||||
-rw-r--r-- | test/testsuites/common/image_helper/src/ImageHelper.cpp | 6 | ||||
-rw-r--r-- | test/testsuites/face/face_test_suite.c | 15 | ||||
-rw-r--r-- | test/testsuites/image/image_test_suite.c | 13 |
4 files changed, 20 insertions, 16 deletions
diff --git a/packaging/capi-media-vision.spec b/packaging/capi-media-vision.spec index f3abded5..9683593d 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.27 -Release: 0 +Release: 1 Group: Multimedia/Framework License: Apache-2.0 and BSD-3-Clause Source0: %{name}-%{version}.tar.gz diff --git a/test/testsuites/common/image_helper/src/ImageHelper.cpp b/test/testsuites/common/image_helper/src/ImageHelper.cpp index 1be08fa0..b72c2e36 100644 --- a/test/testsuites/common/image_helper/src/ImageHelper.cpp +++ b/test/testsuites/common/image_helper/src/ImageHelper.cpp @@ -68,7 +68,11 @@ int ImageHelper::loadImageToBuffer( if (!image.data) return MEDIA_VISION_ERROR_INVALID_PARAMETER; - cv::cvtColor(image, image, CV_BGR2RGB); + try { + cv::cvtColor(image, image, CV_BGR2RGB); + } catch (cv::Exception &e) { + return MEDIA_VISION_ERROR_INVALID_OPERATION; + } *pBufferSize = image.total() * image.elemSize(); (*pDataBuffer) = new unsigned char[*pBufferSize]; diff --git a/test/testsuites/face/face_test_suite.c b/test/testsuites/face/face_test_suite.c index 40832b2f..74fe5b78 100644 --- a/test/testsuites/face/face_test_suite.c +++ b/test/testsuites/face/face_test_suite.c @@ -1797,7 +1797,9 @@ int process_image_file( int frames_counter = 0; char (*frames)[FILE_PATH_SIZE] = (char **)malloc(0); - struct dirent *ent; + int ret = 0; + struct dirent ent; + struct dirent *ent_eof; DIR *dir = opendir(track_target_file_name); if (dir == NULL) { @@ -1805,22 +1807,19 @@ int process_image_file( return MEDIA_VISION_ERROR_INVALID_PATH; } - while ((ent = readdir(dir)) != NULL) { - if (ent->d_name[0] == '.' || strlen(ent->d_name) < 4) + while ((ret = readdir_r(dir, &ent, &ent_eof)) == 0 && ent_eof != NULL) { + if (ent.d_name[0] == '.' || strlen(ent.d_name) < 4) continue; - if (strcmp(".jpg", ent->d_name + strlen(ent->d_name) - 4) != 0) + if (strcmp(".jpg", ent.d_name + strlen(ent.d_name) -4) != 0) continue; - frames_counter++; frames = (char **) realloc(frames, frames_counter * FILE_PATH_SIZE); - snprintf(frames[frames_counter -1], FILE_PATH_SIZE, "%s/%s", - track_target_file_name, ent->d_name); + track_target_file_name, ent.d_name); } - closedir(dir); if (frames_counter <= 0) diff --git a/test/testsuites/image/image_test_suite.c b/test/testsuites/image/image_test_suite.c index dc5503c7..cedc8ea2 100644 --- a/test/testsuites/image/image_test_suite.c +++ b/test/testsuites/image/image_test_suite.c @@ -1234,7 +1234,9 @@ int perform_track_image(mv_image_tracking_model_h target) int frames_counter = 0; char (*frames)[FILE_PATH_SIZE] = (char **)malloc(0); - struct dirent *ent; + int ret = 0; + struct dirent ent; + struct dirent *ent_eof; DIR *dir = opendir(path_to_image); if (dir == NULL) { @@ -1242,19 +1244,18 @@ int perform_track_image(mv_image_tracking_model_h target) return MEDIA_VISION_ERROR_INVALID_PATH; } - while ((ent = readdir(dir)) != NULL) { - if (ent->d_name[0] == '.' || strlen(ent->d_name) < 4) + while ((ret = readdir_r(dir, &ent, &ent_eof)) == 0 && ent_eof != NULL) { + if (ent.d_name[0] == '.' || strlen(ent.d_name) < 4) continue; - if (strcmp(".jpg", ent->d_name + strlen(ent->d_name) -4) != 0) + if (strcmp(".jpg", ent.d_name + strlen(ent.d_name) -4) != 0) continue; frames_counter++; frames = (char**)realloc(frames, frames_counter * FILE_PATH_SIZE); - snprintf(frames[frames_counter -1], FILE_PATH_SIZE, "%s/%s", path_to_image, ent->d_name); + snprintf(frames[frames_counter -1], FILE_PATH_SIZE, "%s/%s", path_to_image, ent.d_name); } - closedir(dir); if (frames_counter <= 0) |