Add sql_autoptr 03/321603/1
authorMinje Ahn <minje.ahn@samsung.com>
Tue, 25 Mar 2025 23:05:13 +0000 (08:05 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Tue, 25 Mar 2025 23:05:13 +0000 (08:05 +0900)
Added auto free pointer for sqlite3

Change-Id: Ibe3a5b2956bf0d661b5d3c2bf01071ded873b1e1
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
packaging/media-server.spec
src/common/include/media-common-db-svc.h
src/common/media-common-db-svc.c

index 0991246fc25da421508a975fb584b0ae8d1c8d32..6a04c024beb87579fb650cfa916e3f8d80b5678f 100644 (file)
@@ -1,7 +1,7 @@
 Name:       media-server
 Summary:    A server for media content management
 Version:    0.6.16
-Release:    1
+Release:    2
 Group:      Multimedia/Service
 License:    Apache-2.0
 Source0:    %{name}-%{version}.tar.gz
index be1c08ec9f37763fd9ffe41f21cec2f53b27d0f5..865217b900f36ed4afc54ab229995cd8b6f44187 100644 (file)
 
 #define MS_STRING_VALID(str)   (str && strlen(str) > 0)
 
+static inline void __sqlfree(void *p)
+{
+    void **pp = (void **)p;
+    sqlite3_free(*pp);
+}
+#define sql_autoptr __attribute__((cleanup(__sqlfree))) char *
+
 typedef enum {
        MS_ITEM_INSERT = 0,
        MS_ITEM_DELETE = 1,
index e4e3f72268f8017deaa101be0a7afcba4792342e..e037f3d4a257ac26cfb044093e3084a1da67c789 100644 (file)
@@ -193,7 +193,7 @@ static int __ms_check_item_exist(sqlite3 *handle, const char *path, bool *modifi
        unsigned long long file_size = 0;
        struct stat st = { 0, };
        sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sql_autoptr sql = NULL;
 #ifdef _USE_TVPD_MODE
        g_autofree gchar *folder_path = NULL;
 #endif
@@ -208,7 +208,6 @@ static int __ms_check_item_exist(sqlite3 *handle, const char *path, bool *modifi
 #endif
 
        ret = media_db_get_result(handle, sql, &sql_stmt);
-       sqlite3_free(sql);
        MS_DBG_RETVM_IF(ret != MS_MEDIA_ERR_NONE, ret, "Error when media_db_get_result. err = [%d]", ret);
 
        if (sqlite3_step(sql_stmt) != SQLITE_ROW) {
@@ -259,14 +258,12 @@ int ms_validate_item(sqlite3 *handle, const char *storage_id, const char *path,
 
 int ms_validity_change_all_items(sqlite3 *handle, const char *storage_id, bool validity , uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
+       sql_autoptr sql = NULL;
 
        MS_DBG_RETVM_IF(!MS_STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
-       char *sql = sqlite3_mprintf("UPDATE media SET validity=%d WHERE storage_uuid=%Q;", validity, storage_id);
-       ret = media_db_update_db_direct(sql, uid);
-       sqlite3_free(sql);
+       sql = sqlite3_mprintf("UPDATE media SET validity=%d WHERE storage_uuid=%Q;", validity, storage_id);
 
-       return ret;
+       return media_db_update_db_direct(sql, uid);
 }
 
 int ms_insert_item_batch(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid)
@@ -332,8 +329,7 @@ int ms_delete_invalid_items(sqlite3 *handle, const char *storage_id, uid_t uid)
 
 int ms_set_folder_item_validity(sqlite3 *handle, const char *storage_id, const char *path, int validity, int recursive, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr sql = NULL;
 
        MS_DBG_RETVM_IF(!MS_STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
        MS_DBG_RETVM_IF(!MS_STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
@@ -343,10 +339,7 @@ int ms_set_folder_item_validity(sqlite3 *handle, const char *storage_id, const c
        else
                sql = sqlite3_mprintf("UPDATE media SET validity=%d WHERE folder_id=(SELECT folder_id FROM folder WHERE folder_path=%Q);", validity, path, storage_id);
 
-       ret = media_db_update_db_direct(sql, uid);
-       sqlite3_free(sql);
-
-       return ret;
+       return media_db_update_db_direct(sql, uid);
 }
 
 int ms_send_dir_update_noti(const char*path, const char*folder_id, ms_noti_type_e noti_type, int pid)
@@ -385,16 +378,13 @@ int ms_insert_folder(sqlite3 *handle, const char *storage_id, const char *path,
 
 int ms_delete_invalid_folder(const char *storage_id, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr sql = NULL;
 
        MS_DBG_RETVM_IF(!MS_STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
 
        sql = sqlite3_mprintf("DELETE FROM folder WHERE validity IN (%d, %d) AND storage_uuid=%Q", MS_INVALID, MS_SCANNING, storage_id);
-       ret = media_db_update_db_direct(sql, uid);
-       sqlite3_free(sql);
 
-       return ret;
+       return media_db_update_db_direct(sql, uid);
 }
 
 int ms_set_folder_validity(sqlite3 *handle, const char *path, int validity, bool is_recursive, uid_t uid)
@@ -497,12 +487,11 @@ int ms_get_folder_id(sqlite3 *handle, const char *storage_id, const char *path,
 {
        int ret = MS_MEDIA_ERR_NONE;
        sqlite3_stmt *sql_stmt = NULL;
-       char *sql = NULL;
+       sql_autoptr sql = NULL;
 
        MS_DBG_RETVM_IF(path == NULL, MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
        sql = sqlite3_mprintf("SELECT folder_id FROM folder WHERE folder_path=%Q", path);
        ret = media_db_get_result(handle, sql, &sql_stmt);
-       sqlite3_free(sql);
        MS_DBG_RETV_IF(ret != MS_MEDIA_ERR_NONE, ret);
 
        if (sqlite3_step(sql_stmt) == SQLITE_ROW) {
@@ -539,15 +528,12 @@ void ms_register_end(uid_t uid)
 #ifdef _USE_TVPD_MODE
 int ms_set_subfolder_validity(sqlite3 *handle, const char *path, int validity, uid_t uid)
 {
-       int ret = MS_MEDIA_ERR_NONE;
-       char *sql = NULL;
+       sql_autoptr sql = NULL;
 
        MS_DBG_RETVM_IF(!MS_STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "path is NULL");
        sql = sqlite3_mprintf("UPDATE folder SET validity=%d WHERE folder_path = ('%q/' || folder_name);", validity, path);
-       ret = media_db_update_db_direct(sql, uid);
-       sqlite3_free(sql);
 
-       return ret;
+       return media_db_update_db_direct(sql, uid);
 }
 
 int ms_update_folder_time(sqlite3 *handle, char *folder_path, uid_t uid)