NODO_B_PLUS *memnode = b_plus_crearnodo(idx);
char *disknode = (char*)malloc(idx->tam_bloque);
+ if (num_node < 0) {
+ PERR("Se intento leer nodo negativo!!\n");
+ exit(1);
+ }
if (disknode == NULL) return NULL;
if (memnode == NULL) return NULL;
brother->claves[j] = fullnode->claves[j+minclaves+es_interno];
/* Copio los hijos ya sea para hoja o no hoja. */
- for (j = 0; j < brother->cant_claves; ++j)
+ for (j = 0; j < brother->cant_claves+1; ++j)
brother->hijos[j] = fullnode->hijos[j+minclaves+es_interno];
- /* Encadeno nodos! */
- brother->hijos[maxhijos-1] = fullnode->hijos[maxhijos-1];
-
/* Ahora me ocupo del nodo que se partio */
fullnode->cant_claves = minclaves;
- /* Obtengo numero de nodo para brother, para encadenar */
+ /* Obtengo numero de nodo para brother y encadeno si es hoja */
numbrother = b_plus_get_num_nodo(idx);
- fullnode->hijos[maxhijos-1] = numbrother;
+ if (fullnode->nivel == 0) fullnode->hijos[minclaves] = numbrother;
/* Ahora fixeamos el padre, apuntando al nuevo hijo */
for (j = parent->cant_claves; j > ithchild; --j)
b_plus_destruir_nodo(new_root);
} else
{
- printf ("Entre maaaaaallll\n");
b_plus_insert_nonfull(idx, raiz, 0, query);
}