]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo1.c
Puto bug que no podia encontrar hace 3 dias, FIXED!!!!!
[z.facultad/75.06/emufs.git] / emufs / tipo1.c
index cc519ccb35be57a465ed3bc62821bb36713a0489..ffca1914cf923b2dc8b48a639a317039866fc43a 100644 (file)
@@ -753,7 +753,7 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
        EMUFS_REG_SIZE tam_reg, move_size;
        INDEX_DAT query;
        EMUFS_FREE fs;
        EMUFS_REG_SIZE tam_reg, move_size;
        INDEX_DAT query;
        EMUFS_FREE fs;
-       char *bloque, *aux, *new_bloque;
+       char *bloque = 0, *aux, *new_bloque = 0;
        int cant_reg, i, result, dif;
        
        /*le asigno un posible numero de bloque para el caso en que no encuentre donde meterlo*/
        int cant_reg, i, result, dif;
        
        /*le asigno un posible numero de bloque para el caso en que no encuentre donde meterlo*/
@@ -867,6 +867,8 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
                        clave = grabar_ordenado_en_bloque(emu,ptr,size,new_bloque,query.num_bloque, emu->tam_bloque-move_size,err);
                        if(*err != 0){
                                PERR("NO SE PUDO GRABAR ORDENADO");
                        clave = grabar_ordenado_en_bloque(emu,ptr,size,new_bloque,query.num_bloque, emu->tam_bloque-move_size,err);
                        if(*err != 0){
                                PERR("NO SE PUDO GRABAR ORDENADO");
+                               free(new_bloque);
+                               free(bloque);
                                return -1;
                        }
                        /*actualizo el arbol con la nueva clave*/
                                return -1;
                        }
                        /*actualizo el arbol con la nueva clave*/
@@ -876,6 +878,8 @@ int emufs_tipo1_insertar_ordenado(EMUFS *emu, void *ptr, EMUFS_REG_SIZE size, in
                        return 0;
                }
        }
                        return 0;
                }
        }
+       if (new_bloque) free(new_bloque);
+       if (bloque) free(bloque);
        return 0;
 }
 
        return 0;
 }