Use glib memory allocation 10/248210/1
authorMinje Ahn <minje.ahn@samsung.com>
Tue, 24 Nov 2020 01:31:31 +0000 (10:31 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Tue, 24 Nov 2020 01:31:56 +0000 (10:31 +0900)
Change-Id: Ia9e7e9c8650827ac14315b3a29d83fe743206852
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/metadata_extractor.c

index c2eeb6a44f70aeb10600ae9d86b23e58bb5296ee..b1a2b1a7bcc0a586f9d5595bd614b060ba2cd88e 100644 (file)
@@ -442,8 +442,7 @@ int metadata_extractor_create(metadata_extractor_h *metadata)
 
        metadata_extractor_retvm_if(metadata == NULL, METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Handle is null");
 
-       metadata_extractor_s *_metadata = (metadata_extractor_s *)calloc(1, sizeof(metadata_extractor_s));
-       metadata_extractor_retvm_if(_metadata == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
+       metadata_extractor_s *_metadata = g_new0(metadata_extractor_s, 1);
 
        _metadata->path = NULL;
        _metadata->buffer = NULL;
@@ -473,13 +472,12 @@ int metadata_extractor_set_path(metadata_extractor_h metadata, const char *path)
 
        if ((_metadata->path != NULL) || (_metadata->buffer != NULL)) {
                __metadata_extractor_destroy_handle(_metadata);
-               SAFE_FREE(_metadata->path);
+               g_free(_metadata->path);
                _metadata->attr_h = 0;
                _metadata->tag_h = 0;
        }
 
        _metadata->path = g_strdup(path);
-       metadata_extractor_retvm_if(_metadata->path == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
 
        return ret;
 }
@@ -493,7 +491,8 @@ int metadata_extractor_set_buffer(metadata_extractor_h metadata, const void *buf
 
        if ((_metadata->path != NULL) || (_metadata->buffer != NULL)) {
                __metadata_extractor_destroy_handle(_metadata);
-               SAFE_FREE(_metadata->path);
+               g_free(_metadata->path);
+               _metadata->path = NULL;
                _metadata->attr_h = 0;
                _metadata->tag_h = 0;
        }
@@ -513,8 +512,8 @@ int metadata_extractor_destroy(metadata_extractor_h metadata)
 
        ret = __metadata_extractor_destroy_handle(_metadata);
 
-       SAFE_FREE(_metadata->path);
-       SAFE_FREE(_metadata);
+       g_free(_metadata->path);
+       g_free(_metadata);
 
        return ret;
 }
@@ -529,6 +528,9 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index,
 
        metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
+       *lyrics = NULL;
+       *time_stamp = 0;
+
        ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG);
        if (ret != METADATA_EXTRACTOR_ERROR_NONE)
                return ret;
@@ -537,20 +539,14 @@ int metadata_extractor_get_synclyrics(metadata_extractor_h metadata, int index,
        if (ret != METADATA_EXTRACTOR_ERROR_NONE)
                return ret;
 
-       if ((_synclyrics_num > 0) && (index < _synclyrics_num)) {
+       if (_synclyrics_num > 0 && index < _synclyrics_num) {
                ret = mm_file_get_synclyrics_info((MMHandleType)_metadata->tag_h, index, &_time_info, &_lyrics);
                metadata_extractor_retvm_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, "Internal operation error");
 
-               if ((_lyrics != NULL) && (strlen(_lyrics) > 0)) {
+               if (_lyrics && strlen(_lyrics) > 0)
                        *lyrics = g_strdup(_lyrics);
-                       metadata_extractor_retvm_if(*lyrics == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
-               } else
-                       *lyrics = NULL;
 
                *time_stamp = _time_info;
-       } else {
-               *lyrics = NULL;
-               *time_stamp = 0;
        }
 
        return ret;
@@ -598,6 +594,8 @@ int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extr
 
        metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
+       *value = NULL;
+
        ret = __extract_meta(_metadata, attribute);
        metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "fail to __metadata_extractor_extract_meta() [%d]", ret);
 
@@ -939,31 +937,17 @@ int metadata_extractor_get_metadata(metadata_extractor_h metadata, metadata_extr
        }
 
        if (is_string) {
-               if ((s_value != NULL) && (strlen(s_value) > 0)) {
+               if (s_value && strlen(s_value) > 0)
                        *value = g_strdup(s_value);
-                       /*Only use strdup in video_codec and audio_codec */
-                       if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC)
-                               SAFE_FREE(s_value);
 
-                       if (*value == NULL) {
-                               metadata_extractor_error("OUT_OF_MEMORY(0x%08x)", METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY);
-                               return METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY;
-                       }
-               } else {
-                       if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC)
-                               SAFE_FREE(s_value);
-                       *value = NULL;
-               }
+               /*Only use strdup in video_codec and audio_codec */
+               if (attribute == METADATA_VIDEO_CODEC || attribute == METADATA_AUDIO_CODEC)
+                       g_free(s_value);
        } else {
-               char extracted_metadata[META_MAX_LEN] = {0, };
-
                if (is_double)
-                       snprintf(extracted_metadata, sizeof(extracted_metadata), "%f", d_value);
+                       *value = g_strdup_printf("%f", d_value);
                else
-                       snprintf(extracted_metadata, sizeof(extracted_metadata), "%d", i_value);
-
-               *value = g_strdup(extracted_metadata);
-               metadata_extractor_retvm_if(*value == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
+                       *value = g_strdup_printf("%d", i_value);
        }
 
        return ret;
@@ -979,40 +963,24 @@ int metadata_extractor_get_artwork(metadata_extractor_h metadata, void **artwork
 
        metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
+       *artwork = NULL;
+       *mime_type = NULL;
+       *size = 0;
+
        ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_TAG);
        metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Error in __metadata_extractor_check_and_extract_meta()");
 
        ret = __metadata_extractor_get_artwork(_metadata, &_artwork, &_artwork_size);
        metadata_extractor_retvm_if(ret != METADATA_EXTRACTOR_ERROR_NONE, ret, "Fail to get artwork");
 
-       if ((_artwork_size > 0) && (_artwork != NULL)) {
+       if (_artwork_size > 0 && _artwork) {
                ret = __metadata_extractor_get_tag_str(_metadata, MM_FILE_TAG_ARTWORK_MIME, &_artwork_mime);
-               if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
-                       *artwork = NULL;
-                       *size = 0;
-
+               if (ret != METADATA_EXTRACTOR_ERROR_NONE)
                        return ret;
-               }
 
-               *artwork = calloc(1, _artwork_size);
-               if (*artwork != NULL) {
-                       memcpy(*artwork, _artwork, _artwork_size);
-                       *size = _artwork_size;
-               } else {
-                       *size = 0;
-               }
-
-               if ((_artwork_mime != NULL) && (strlen(_artwork_mime) > 0)) {
-                       *mime_type = g_strdup(_artwork_mime);
-                       metadata_extractor_retvm_if(*mime_type == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
-               } else {
-                       *mime_type = NULL;
-               }
-
-       } else {
-               *artwork = NULL;
-               *mime_type = NULL;
-               *size = 0;
+               *artwork = g_memdup(_artwork, _artwork_size);
+               *size = _artwork_size;
+               *mime_type = g_strdup(_artwork_mime);
        }
 
        return ret;
@@ -1027,6 +995,9 @@ int metadata_extractor_get_frame(metadata_extractor_h metadata, void **frame, in
 
        metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)) || (!size), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
+       *frame = NULL;
+       *size = 0;
+
        ret = __metadata_extractor_check_and_extract_meta(_metadata, METADATA_TYPE_ATTR);
        if (ret != METADATA_EXTRACTOR_ERROR_NONE)
                return ret;
@@ -1035,14 +1006,9 @@ int metadata_extractor_get_frame(metadata_extractor_h metadata, void **frame, in
        if (ret != METADATA_EXTRACTOR_ERROR_NONE)
                return ret;
 
-       if ((_frame_size > 0) && (_frame != NULL)) {
-               *frame = calloc(1, _frame_size);
-               metadata_extractor_retvm_if(*frame == NULL, METADATA_EXTRACTOR_ERROR_OUT_OF_MEMORY, "Memory allocation failure");
-               memcpy(*frame, _frame, _frame_size);
+       if (_frame_size > 0 && _frame) {
+               *frame = g_memdup(_frame, _frame_size);
                *size = _frame_size;
-       } else {
-               *frame = NULL;
-               *size = 0;
        }
 
        return ret;
@@ -1061,6 +1027,8 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned
        metadata_extractor_retvm_if((!_metadata) || ((!_metadata->path) && (!_metadata->buffer)) || (!size), METADATA_EXTRACTOR_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
        micro_timestamp = (long long)timestamp * 1000;
+       *frame = NULL;
+       *size = 0;
 
        metadata_extractor_debug("accurate [%d] timestamp[%lu] micro_timestamp[%lld]", is_accurate, timestamp, micro_timestamp);
 
@@ -1071,8 +1039,8 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned
 
        metadata_extractor_retv_free_if(ret != FILEINFO_ERROR_NONE, METADATA_EXTRACTOR_ERROR_OPERATION_FAILED, _frame);
 
-       if (_frame != NULL) {
-               if ((_frame_size > 0)) {
+       if (_frame) {
+               if (_frame_size > 0) {
                        *frame = _frame;
                        *size = _frame_size;
                } else {
@@ -1080,9 +1048,6 @@ int metadata_extractor_get_frame_at_time(metadata_extractor_h metadata, unsigned
                        metadata_extractor_error("METADATA_EXTRACTOR_ERROR_OPERATION_FAILED (0x%08x)", METADATA_EXTRACTOR_ERROR_OPERATION_FAILED);
                        return METADATA_EXTRACTOR_ERROR_OPERATION_FAILED;
                }
-       } else {
-               *frame = NULL;
-               *size = 0;
        }
 
        return ret;