]> git.llucax.com Git - z.facultad/75.52/treemulator.git/blobdiff - src/btree.cpp
El block_data ahora es manejado por BTree.
[z.facultad/75.52/treemulator.git] / src / btree.cpp
index 26224a515547a10dac3c2689e3d7b59f7d66ccc2..77967bf45ce1471d2a90793753067547f96f7a47 100644 (file)
@@ -97,14 +97,20 @@ void BTree::WriteBlock (uchar *block, uint num)
 void BTree::AddKey (const Clave &k)
 {
        uint left, right;
-       Clave *kout;
+       Clave *kout, *in;
+
+       in = k.Clone ();
+       /* TODO : Hacer un contador con recuperacion */
+       in->SetBlockData (0);
 
        try {
-               kout = AddKeyR (k.Clone (), 0, left, right);
+               kout = AddKeyR (in->Clone (), 0, left, right);
        } catch (Exception *e) {
                throw e;
        }
 
+       delete in;
+
        if (kout) {
                unsigned short level;
                /* Debo dejar la raiz en el nodo 0, por lo que paso el nodo
@@ -1181,9 +1187,9 @@ uchar *BTree::NewBlock (uint &num)
        BTreeNodeHeader nh;
 
        std::list<uint>::iterator it;
-       it = deleted_nodes.begin ();
 
-       if (it != deleted_nodes.end ()) {
+       if (deleted_nodes.size ()) {
+               it = deleted_nodes.begin ();
                num = *it;
                deleted_nodes.erase (it);
        } else {