Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=cfpm.git;a=commitdiff;h=16760e82a94d63aca00b5e9431515601398282b5

commit 16760e82a94d63aca00b5e9431515601398282b5
Author: Priyank <priy...@frugalware.org>
Date:   Mon Jun 8 12:49:29 2009 +0530

changes in List, PackageList, GroupList
* new member: bool freeable (decides whether the internal PM_LIST*
should be freed or no)
* new constructors to set freeable property at init
* this is done because certain functions of libpacman return pointers to
internal lists that shouldn't be freed.

diff --git a/pm.cc b/pm.cc
index 8363e68..a0e2268 100644
--- a/pm.cc
+++ b/pm.cc
@@ -432,17 +432,27 @@ void* List::getData()

void List::free()
{
-       pacman_list_free(list);
+       if ( freeable )
+       {
+               pacman_list_free(list);
+       }
+       return;
}

PackageList::PackageList()
{
list = NULL;
+       freeable = false;
}

PackageList::PackageList(PM_LIST *l)
{
-       list = l;
+       ( l ) && ( list = l ) && ( freeable = true );
+}
+
+PackageList::PackageList(PM_LIST *l,bool freelist)
+{
+       ( l ) && ( list = l ) && ( freeable = freelist );
}

Package* PackageList::getData()
@@ -460,11 +470,17 @@ Package* PackageList::getData()
GroupList::GroupList()
{
list = NULL;
+       freeable = false;
}

GroupList::GroupList(PM_LIST *l)
{
-       list = l;
+       ( l ) && ( list = l ) && ( freeable = true );
+}
+
+GroupList::GroupList(PM_LIST *l,bool freelist)
+{
+       ( l ) && ( list = l ) && ( freeable = freelist );
}

Group* GroupList::getData()
diff --git a/pm.hh b/pm.hh
index 1f9dff0..5f44893 100644
--- a/pm.hh
+++ b/pm.hh
@@ -96,7 +96,8 @@ namespace PM
class List
{
protected:
-                       PM_LIST *list;
+                       PM_LIST *list;
+                       bool    freeable;

public:
List();
@@ -114,6 +115,7 @@ namespace PM
public:
PackageList();
PackageList(PM_LIST *l);
+                       PackageList(PM_LIST *l,bool freelist);
Package *getData();
};

@@ -122,6 +124,7 @@ namespace PM
public:
GroupList();
GroupList(PM_LIST *l);
+                       GroupList(PM_LIST *l,bool freelist);
Group *getData();
};
}
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to