Fix a bug regarding category data
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_appinfo.c
index 08db1f5..6211b79 100644 (file)
@@ -68,8 +68,8 @@ static int _get_filtered_query(pkgmgrinfo_filter_x *filter,
                        "(SELECT package FROM package_info WHERE package_disable='false')";
        GSList *list;
 
-       len += strlen(" WHERE 1=1");
        strncat(buf, " WHERE 1=1", MAX_QUERY_LEN - len - 1);
+       len += strlen(" WHERE 1=1");
 
        if (filter == NULL) {
                strncat(buf, query_pkg_disable, MAX_QUERY_LEN - len - 1);
@@ -82,35 +82,35 @@ static int _get_filtered_query(pkgmgrinfo_filter_x *filter,
                if (condition == NULL)
                        continue;
 
-               len += strlen(" AND ");
                strncat(buf, " AND ", MAX_QUERY_LEN - len - 1);
+               len += strlen(" AND ");
 
-               len += strlen(condition);
                strncat(buf, condition, sizeof(buf) - len - 1);
+               len += strlen(condition);
                free(condition);
                condition = NULL;
        }
 
        if (filter->list_metadata) {
-               len += strlen(" AND (");
                strncat(buf, " AND (", MAX_QUERY_LEN - len - 1);
+               len += strlen(" AND (");
        }
        for (list = filter->list_metadata; list; list = list->next) {
                joined |= __get_metadata_filter_condition(list->data,
                                &condition, bind_params);
                if (condition == NULL)
                        continue;
-               len += strlen(condition);
                strncat(buf, condition, sizeof(buf) - len - 1);
+               len += strlen(condition);
                free(condition);
                condition = NULL;
 
-               len += strlen(" OR ");
                strncat(buf, " OR ", MAX_QUERY_LEN - len - 1);
+               len += strlen(" OR ");
        }
        if (filter->list_metadata) {
-               len += strlen("1=0)");
                strncat(buf, "1=0)", MAX_QUERY_LEN - len - 1);
+               len += strlen("1=0)");
        }
 
        if (joined & E_PMINFO_APPINFO_JOIN_LOCALIZED_INFO) {
@@ -135,8 +135,8 @@ static int _get_filtered_query(pkgmgrinfo_filter_x *filter,
                len += strlen(join_appinfo_for_uid);
        }
        strncat(tmp_query, buf, MAX_QUERY_LEN - len - 1);
-
        len += strlen(buf);
+
        strncat(tmp_query, query_pkg_disable, MAX_QUERY_LEN - len - 1);
 
        *query = strdup(tmp_query);