summaryrefslogtreecommitdiff
path: root/muggle-plugin/mg_order.c
diff options
context:
space:
mode:
authorwr61 <wr61@e10066b5-e1e2-0310-b819-94efdf66514b>2005-02-11 09:40:09 +0000
committerwr61 <wr61@e10066b5-e1e2-0310-b819-94efdf66514b>2005-02-11 09:40:09 +0000
commit0fbbb6071648d47c75d14eb1075bf6f5c85349cc (patch)
tree14ab569569e235f91773857784e711563d5e0640 /muggle-plugin/mg_order.c
parentc17ecbd260b3304b60fedfa70999f2eccabb668d (diff)
downloadvdr-plugin-muggle-0fbbb6071648d47c75d14eb1075bf6f5c85349cc.tar.gz
vdr-plugin-muggle-0fbbb6071648d47c75d14eb1075bf6f5c85349cc.tar.bz2
fix many memory leaks, add missing copy constructor to mgOrder
git-svn-id: https://vdr-muggle.svn.sourceforge.net/svnroot/vdr-muggle/trunk@478 e10066b5-e1e2-0310-b819-94efdf66514b
Diffstat (limited to 'muggle-plugin/mg_order.c')
-rw-r--r--muggle-plugin/mg_order.c33
1 files changed, 25 insertions, 8 deletions
diff --git a/muggle-plugin/mg_order.c b/muggle-plugin/mg_order.c
index 93463b5..64cb379 100644
--- a/muggle-plugin/mg_order.c
+++ b/muggle-plugin/mg_order.c
@@ -4,6 +4,8 @@
#include <stdio.h>
+const char * EMPTY = "XNICHTGESETZTX";
+
bool iskeyGenre(mgKeyTypes kt)
{
return kt>=keyGenre1 && kt <= keyGenres;
@@ -596,6 +598,11 @@ mgOrder::mgOrder()
setKey (2,keyTrack);
}
+mgOrder::~mgOrder()
+{
+ truncate(0);
+}
+
mgKey*
mgOrder::Key(unsigned int idx) const
{
@@ -626,6 +633,18 @@ const mgOrder&
mgOrder::operator=(const mgOrder& from)
{
clear();
+ InitFrom(from);
+ return *this;
+}
+
+mgOrder::mgOrder(const mgOrder &from)
+{
+ InitFrom(from);
+}
+
+void
+mgOrder::InitFrom(const mgOrder &from)
+{
for (unsigned int i = 0; i < from.size();i++)
{
mgKey *k = ktGenerate(from.getKeyType(i),m_db);
@@ -633,14 +652,6 @@ mgOrder::operator=(const mgOrder& from)
Keys.push_back(k);
}
if (from.m_db) setDB(from.m_db);
- return *this;
-}
-
-mgOrder&
-mgOrder::operator+=(mgKey* k) {
- k->setdb(m_db);
- Keys.push_back(k);
- return *this;
}
string
@@ -769,6 +780,12 @@ mgOrder::truncate(unsigned int i)
}
void
+mgOrder::clear()
+{
+ truncate(0);
+}
+
+void
mgOrder::clean()
{
// remove double entries: