[Content] - fixing createThumbnail() function 91/82991/3 accepted/tizen/common/20160809.183738 accepted/tizen/ivi/20160809.075434 accepted/tizen/mobile/20160809.075333 accepted/tizen/tv/20160809.075352 accepted/tizen/wearable/20160809.075415 submit/tizen/20160809.015641
authorAndrzej Popowski <a.popowski@samsung.com>
Mon, 8 Aug 2016 11:25:23 +0000 (13:25 +0200)
committerHyunjin Park <hj.na.park@samsung.com>
Tue, 9 Aug 2016 01:54:42 +0000 (10:54 +0900)
Change-Id: I834dc5a5b427b0cc50e48d14b13aed9b84965ae8
Signed-off-by: Andrzej Popowski <a.popowski@samsung.com>
src/content/content_manager.cc

index 28140daf1e9a23ebd8e5cf73d5d4020e11bf7831..26736048769b2f8086227a762a977d0b9a40b15e 100644 (file)
@@ -664,16 +664,18 @@ static bool playlist_content_member_cb(int playlist_member_id, media_info_h medi
 void CreateThumbnailCallback(media_content_error_e err, const char* path, void* user_data) {
   LoggerD("Enter");
 
+  unsigned int* callbackId = (unsigned int*) user_data;
+
   if (!(ContentManager::getInstance()->getContentInstance())) {
     // There is not instance already
     LoggerD("There is not instance now");
+    delete callbackId;
     return;
   }
 
-  unsigned int callbackId = (unsigned int) user_data;
   picojson::object out;
 
-  out["callbackId"] = picojson::value(static_cast<double>(callbackId));
+  out["callbackId"] = picojson::value(static_cast<double>(*callbackId));
 
   if (MEDIA_CONTENT_ERROR_NONE == err) {
     out["result"] = picojson::value(std::string(path));
@@ -682,6 +684,8 @@ void CreateThumbnailCallback(media_content_error_e err, const char* path, void*
     PlatformResult result = ContentManager::getInstance()->convertError(err);
     LogAndReportError(result, &out, ("Failed to create a thumbnail"));
   }
+
+  delete callbackId;
   common::Instance::PostMessage(ContentManager::getInstance()->getContentInstance(),
                                 picojson::value(out).serialize().c_str());
 }
@@ -1636,23 +1640,27 @@ int ContentManager::getNumberOfTracks(int id, int* result) {
 common::PlatformResult ContentManager::createThumbnail(const picojson::value& args) {
   LoggerD("Enter");
 
-  unsigned int callbackId = static_cast<unsigned int>(args.get("callbackId").get<double>());
+  unsigned int* callbackId = new unsigned int(static_cast<unsigned int>(args.get("callbackId").get<double>()));
   std::string id = args.get("id").get<std::string>();
 
   media_info_h media = NULL;
   int ret = media_info_get_media_from_db(id.c_str(), &media);
   if(MEDIA_CONTENT_ERROR_NONE != ret && nullptr == media) {
+    delete callbackId;
     return LogAndCreateResult(ErrorCode::ABORT_ERR, "Getting media is failed.",
                               ("Getting media is failed: %d (%s)", ret, get_error_message(ret)));
   }
 
-  ret = media_info_create_thumbnail(media, CreateThumbnailCallback, (void*) callbackId);
+  ret = media_info_create_thumbnail(media, CreateThumbnailCallback, /* (void*) callbackId */ nullptr);
   media_info_destroy(media);
   if(MEDIA_CONTENT_ERROR_NONE != ret) {
+    delete callbackId;
     return LogAndCreateResult(ErrorCode::ABORT_ERR, "Creating thumbnail failed.",
                               ("Creating thumbnail failed: %d (%s)", ret, get_error_message(ret)));
   }
 
+  delete callbackId;
+
   return PlatformResult(ErrorCode::NO_ERROR);
 }