/*
- * Copyright (c) 2016-2018 Samsung Electronics Co.
+ * Copyright (c) 2016-2019 Samsung Electronics Co.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
#include <cstdlib>
+#include <functional>
#include <memory>
#include <set>
#include <sys/types.h>
class GListWrap {
public:
- GListWrap() : m_head(nullptr) {
+ GListWrap() : m_head(nullptr), m_deleter(g_list_free) {
m_head = g_list_alloc();
if (!m_head) {
ALOGE("Failed to allocate glib list");
}
}
- GListWrap(GList *_list) : m_head(_list) {}
+ GListWrap(GList *_list, std::function<void(GList*)> deleter = g_list_free)
+ : m_head(_list), m_deleter(deleter) {}
- ~GListWrap() { g_list_free(m_head);}
+ ~GListWrap() { m_deleter(m_head);}
void append(gpointer data) {
GList *newHead = g_list_prepend(m_head, data);
private:
GList *m_head;
+ std::function<void(GList*)> m_deleter;
};
Privacy getPrivacyName(const Privilege &privilege) {
return {};
}
- GListWrap privMappedWrap(privMapped);
+ GListWrap privMappedWrap(privMapped, privilege_db_manager_list_free);
std::vector<std::string> privMappedVector;
for (GList *l = privMappedWrap.get(); l != NULL; l = l->next) {
std::string corePriv = static_cast<char*>(l->data);
return {};
}
- GListWrap privMappedWrap(privMapped);
+ GListWrap privMappedWrap(privMapped, privilege_info_list_free);
std::vector<std::string> privMappedVector;
for (GList *l = privMappedWrap.get(); l != NULL; l = l->next) {
std::string corePriv = static_cast<char*>(l->data);
return {privacy};
}
- GListWrap privList(privilegeList);
+ GListWrap privList(privilegeList, privilege_info_list_free);
std::vector<Privilege> privVector;
for (GList *l = privList.get(); l != NULL; l = l->next) {
privVector.push_back(static_cast<char*>(l->data));