]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/indice_bplus.c
Paso el fin de lĂ­nea a formato Unix (perdon tenia que verlo para estudiar :P).
[z.facultad/75.06/emufs.git] / emufs / indice_bplus.c
index 323c7c0f5e936ee3ab4001c0ba5a581c1eed8b42..b147284a6db3f0b3d91840c2206f034bda5a1c9a 100644 (file)
@@ -706,7 +706,10 @@ CLAVE emufs_b_plus_obtener_menor_clave(INDICE *idx) {
                        b_plus_destruir_nodo(node);                     
                        node = b_plus_leer_nodo(idx,num_child);
                }
                        b_plus_destruir_nodo(node);                     
                        node = b_plus_leer_nodo(idx,num_child);
                }
-               else break;             
+               else {
+                       b_plus_destruir_nodo(node);
+                       return key;             
+               }
        }
        
        /* Ahora estoy en la primer hoja del arbol, devuelvo la primer clave */
        }
        
        /* Ahora estoy en la primer hoja del arbol, devuelvo la primer clave */
@@ -725,6 +728,7 @@ CLAVE emufs_b_plus_obtener_mayor_clave(INDICE *idx) {
        node = b_plus_leer_nodo(idx,0);
        if (node == NULL) {
                key.i_clave = -1;
        node = b_plus_leer_nodo(idx,0);
        if (node == NULL) {
                key.i_clave = -1;
+               b_plus_destruir_nodo(node);
                return key;
        }
        
                return key;
        }
        
@@ -737,12 +741,16 @@ CLAVE emufs_b_plus_obtener_mayor_clave(INDICE *idx) {
                        node = b_plus_leer_nodo(idx,num_child);
                        cant_claves = node->cant_claves;
                }
                        node = b_plus_leer_nodo(idx,num_child);
                        cant_claves = node->cant_claves;
                }
-               else return key;                
+               else {
+                       b_plus_destruir_nodo(node);
+                       return key;             
+               }
        }
        
        /* Ahora estoy en la ultima hoja del arbol, devuelvo la ultima clave */         
        bucket = idx->padre->obtener_claves_raw(idx->padre,node->hijos[cant_claves-1]);
        key = bucket->claves[bucket->cant_keys-1];
        }
        
        /* Ahora estoy en la ultima hoja del arbol, devuelvo la ultima clave */         
        bucket = idx->padre->obtener_claves_raw(idx->padre,node->hijos[cant_claves-1]);
        key = bucket->claves[bucket->cant_keys-1];
+       free(bucket->claves);
        free (bucket);  
        b_plus_destruir_nodo(node);
        
        free (bucket);  
        b_plus_destruir_nodo(node);