typedef struct {
const char *server_name;
const char *playlist_name;
- GSList *query_list;
- unsigned int query_length;
+ sqlite3_str *query_list;
} playlist_query_s;
static GMutex tzplatform_mutex;
size_t basic_size = 0;
gchar **params = NULL;
playlist_query_s *query = (playlist_query_s *)user_data;
- char *sql_str = NULL;
mc_retm_if_failed(key);
mc_retm_if_failed(kv);
params = g_strsplit(basic_val, MC_STRING_DELIMITER, 0);
mc_retm_if_failed(params);
- sql_str = sqlite3_mprintf("INSERT INTO %q(server_name, playlist_name, item_index, %s) VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q);",
- MC_DB_TABLE_PLAYLIST, META_LIST, query->server_name, query->playlist_name, __replace_null(params[0]),
- __replace_null(params[1]), __replace_null(params[2]), __replace_null(params[3]), __replace_null(params[4]), __replace_null(params[5]),
- __replace_null(params[6]), __replace_null(params[7]), __replace_null(params[8]), __replace_null(params[9]), __replace_null(params[10]),
- __replace_null(params[11]), __replace_null(params[12]), __replace_null(params[13]), __replace_null(params[14]));
+ sqlite3_str_appendf(
+ query->query_list,
+ "INSERT INTO %q(server_name, playlist_name, item_index, %s) VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q);",
+ MC_DB_TABLE_PLAYLIST, META_LIST, query->server_name, query->playlist_name, __replace_null(params[0]),
+ __replace_null(params[1]), __replace_null(params[2]), __replace_null(params[3]), __replace_null(params[4]), __replace_null(params[5]),
+ __replace_null(params[6]), __replace_null(params[7]), __replace_null(params[8]), __replace_null(params[9]), __replace_null(params[10]),
+ __replace_null(params[11]), __replace_null(params[12]), __replace_null(params[13]), __replace_null(params[14]));
g_strfreev(params);
-
- if (!sql_str) {
- mc_error("sql_str is NULL");
- return;
- }
- mc_secure_debug("sql_str [%s]", sql_str);
-
- query->query_list = g_slist_append(query->query_list, sql_str);
- query->query_length += strlen(sql_str);
-}
-
-static void __sqlite3_safe_free(gpointer data)
-{
- sqlite3_free(data);
}
int __read_message_from_file(const gchar *path, gchar **data, size_t *size)
gchar *message = NULL;
size_t message_size = 0;
bundle *bundle = NULL;
- playlist_query_s playlist_query = { NULL, NULL, NULL, 0 };
- GSList *iter = NULL;
+ playlist_query_s playlist_query = { 0, };
mc_retvm_if((!params[2] || !params[3]),
MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
playlist_query.server_name = params[1];
playlist_query.playlist_name = params[2];
+ playlist_query.query_list = sqlite3_str_new(NULL);
bundle_foreach(bundle, __make_playlist_query_cb, &playlist_query);
bundle_free(bundle);
- mc_retvm_if(!playlist_query.query_list, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query_list");
-
- _sql_str = (char *)sqlite3_malloc(playlist_query.query_length + 1);
- if (!_sql_str) {
- mc_error("invalid _sql_str");
- g_slist_free_full(playlist_query.query_list, __sqlite3_safe_free);
- return MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY;
- }
- memset(_sql_str, 0, playlist_query.query_length + 1);
- for (iter = playlist_query.query_list; (iter && iter->data); iter = g_slist_next(iter))
- g_strlcat(_sql_str, (char *)iter->data, playlist_query.query_length + 1);
-
- g_slist_free_full(playlist_query.query_list, __sqlite3_safe_free);
+ _sql_str = sqlite3_str_finish(playlist_query.query_list);
playlist_query.query_list = NULL;
+ mc_retvm_if(!_sql_str, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "invalid query");
} else if (strncmp(MC_DB_CMD_UPDATE_ICON, params[0], strlen(MC_DB_CMD_UPDATE_ICON)) == 0) {
if (params[2])