Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=57a96b2091baf5d4f3d7bbefb4f24122fc68e223

commit 57a96b2091baf5d4f3d7bbefb4f24122fc68e223
Author: Michel Hermier <[email protected]>
Date:   Tue Sep 9 13:48:30 2014 +0200

libpacman: Add FPtrListItem::swap_data.

diff --git a/lib/libpacman/fstdlib.h b/lib/libpacman/fstdlib.h
index 7b2b2cc..e9c2156 100644
--- a/lib/libpacman/fstdlib.h
+++ b/lib/libpacman/fstdlib.h
@@ -60,14 +60,6 @@ int f_ptrcmp(const void *ptr1, const void *ptr2)
return f_signp(f_diffptr(ptr1, ptr2));
}

-static inline
-void f_ptrswap(void **ptr1, void **ptr2)
-{
-       void *tmp = *ptr2;
-       *ptr2 = *ptr1;
-       *ptr1 = tmp;
-}
-
#define F_PATH_NOCHECK  (1<<0)
#define F_PATH_RELATIVE (1<<1)

diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index 6c2732c..81c0d5a 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -434,7 +434,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t 
type, int flags)
if(_pacman_versioncmp(pkg_queued->version(), pkg_new->version()) < 0) {
_pacman_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target 
list"),
pkg_queued->name(), pkg_queued->version(), pkg_new->version());
-                       f_ptrswap(&i->m_data, (void **)&pkg_new);
+                       i->swap_data((void **)&pkg_new);
} else {
_pacman_log(PM_LOG_WARNING, _("newer version %s-%s is in the target list -- 
skipping"),
pkg_queued->name(), pkg_queued->version(), pkg_new->version());
@@ -1102,28 +1102,26 @@ int _pacman_fpmpackage_install(Package *pkg, 
pmtranstype_t type, pmtrans_t *tran
*/
auto &backup = pkg->backup();
for(auto lp = backup.begin(), lp_end = backup.end(); lp != lp_end; lp = 
lp->next()) {
-                                               char *fn;
char *file = f_stringlistitem_to_str(lp);

if(!file) continue;
if(!strcmp(file, pathname)) {
+                                                       char *fn;
if(!_pacman_strempty(pkg->sha1sum)) {
/* 32 for the hash, 1 for the terminating NULL, and 1 for the tab delimiter */
if((fn = (char *)malloc(strlen(file)+34)) == NULL) {
RET_ERR(PM_ERR_MEMORY, -1);
}
sprintf(fn, "%s\t%s", file, md5_pkg);
-                                                               FREE(file);
-                                                               lp->m_data = fn;
} else {
/* 41 for the hash, 1 for the terminating NULL, and 1 for the tab delimiter */
if((fn = (char *)malloc(strlen(file)+43)) == NULL) {
RET_ERR(PM_ERR_MEMORY, -1);
}
sprintf(fn, "%s\t%s", file, sha1_pkg);
-                                                               FREE(file);
-                                                               lp->m_data = fn;
}
+                                                       lp->swap_data((void 
**)&fn);
+                                                       free(fn);
}
}

@@ -1258,8 +1256,8 @@ int _pacman_fpmpackage_install(Package *pkg, 
pmtranstype_t type, pmtrans_t *tran
sprintf(fn, "%s\t%s", file, sha1);
FREE(sha1);
}
-                                                       FREE(file);
-                                                       lp->m_data = fn;
+                                                       lp->swap_data((void 
**)fn);
+                                                       free(fn);
}
}
}
@@ -1614,8 +1612,9 @@ int __pmtrans_t::commit(FPtrList **data)
auto &depends = depender->depends();
for(auto m = depends.begin(), end = depends.end(); m != end; m = m->next()) {
if(!strcmp(f_stringlistitem_to_str(m), old->name())) {
-                                                                       
FREE(m->m_data);
-                                                                       
m->m_data = strdup(pkg_new->name());
+                                                                       void 
*str = strdup(pkg_new->name());
+                                                                       
m->swap_data(&str);
+                                                                       
free(str);
}
}
if(db_local->write(depender, INFRQ_DEPENDS) == -1) {
diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index b11a3c9..a41cff9 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -519,6 +519,16 @@ public:
return static_cast<FListItem *>(m_previous);
}

+       void swap_data(T &o)
+       {
+               std::swap(m_data, o);
+       }
+
+       void swap_data(T *o)
+       {
+               std::swap(m_data, *o);
+       }
+
//protected:
T m_data;
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to