]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* BUGFIX : Arreglo el bug que hacia que palme en el free de leer_registro. Al parece...
authorRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 5 Apr 2004 15:52:28 +0000 (15:52 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 5 Apr 2004 15:52:28 +0000 (15:52 +0000)
 los FILE * globales causaba algo en la memoria que jodia. Puse los FILE* dentro de cada funcion
 como corresponde y ahora anda bien.
 * Saco el malloc_debug

tipo3/Makefile
tipo3/emufs.h
tipo3/main.c
tipo3/malloc_debug.c [deleted file]
tipo3/malloc_debug.h [deleted file]
tipo3/param_cte.c
tipo3/param_cte.h

index f04eaee0537843f81cf285c8f4c984f06c5d224b..6d93bd571f2c0d5550e080c7399ca6314a46bd8e 100644 (file)
@@ -3,5 +3,5 @@ LDFLAGS=
 
 all: main
 
 
 all: main
 
-main: main.c param_cte.c emufs.c malloc_debug.c
+main: main.c param_cte.c emufs.c
 
 
index cf16da931f52bb98381c1bcfc326a53c04b533b0..aeae57220fea1a75eda0fd41891e3ac8a60b2fe8 100644 (file)
@@ -3,7 +3,6 @@
 
 #include <stdlib.h>
 #include <stdio.h>
 
 #include <stdlib.h>
 #include <stdio.h>
-#include "malloc_debug.h"
 
 typedef enum {T1, T2, T3} EMUFS_TYPE;
 
 
 typedef enum {T1, T2, T3} EMUFS_TYPE;
 
index 09fb9d53378f82668842f38b5a32202c72e67ea0..ec5a04a846ea6213b8a53b3c23896fa8d98da151 100644 (file)
@@ -22,6 +22,5 @@ int main()
 
        emufs_destruir(fp);
 
 
        emufs_destruir(fp);
 
-       MD_Listar();
        return 0;
 }
        return 0;
 }
diff --git a/tipo3/malloc_debug.c b/tipo3/malloc_debug.c
deleted file mode 100644 (file)
index cd2a35a..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/***************************************************************************
- *            malloc_debug.c
- *
- *  Sat Aug 30 17:00:48 2003
- *  Copyright  2003  Ricardo Markiewicz
- *  rmarkie@fi.uba.ar
- ****************************************************************************/
-/*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-/* este debe ser el ultimo include, para evitar errores de compilacion */
-#include "malloc_debug.h"
-
-/* Tengo que sacar los macros dentro de malloc_debug para evitar problemas */
-#undef malloc
-#undef free
-
-typedef struct _t_malloc_ {
-       void *ptr;
-       int size;
-       char file[21];
-       int line;
-       time_t hora;
-       struct _t_malloc_ *next;
-} t_MDAlloc;
-
-static t_MDAlloc *lstMalloc = NULL;
-
-void *MD_malloc(int size, int line, char *file)
-{
-       void *ptr;
-       t_MDAlloc *nodo;
-
-       ptr = malloc(size);
-       if (ptr == NULL) {
-               /* No registro nada porque no hay memoria! */
-               return NULL;
-       }
-
-       nodo = (t_MDAlloc *)malloc(sizeof(t_MDAlloc));
-       if (nodo == NULL) {
-               free(ptr);
-               return NULL;
-       }
-       nodo->ptr = ptr;
-       nodo->size = size;
-       nodo->line = line;
-       nodo->hora = time(NULL);
-       strncpy(nodo->file, file, 20);
-
-       /* Agrego el nodo al principio */
-       nodo->next = lstMalloc;
-       lstMalloc = nodo;
-
-       return ptr;
-}
-
-void MD_free(void *ptr)
-{
-       /* Tengo que buscar el nodo alocado */
-       t_MDAlloc *node, *padre;
-       node = lstMalloc;
-       padre = NULL;
-       while (node != NULL) {
-               if (node->ptr == ptr) {
-                       /* lo encontre! */
-                       if (padre != NULL) {
-                               padre->next = node->next;
-                       } else {
-                               lstMalloc = node->next;
-                       }
-                       free(node);
-                       break;
-               }
-               padre = node;
-               node = node->next;
-       }
-       free(ptr);
-}
-
-void MD_Listar()
-{
-       struct tm *hora;
-       t_MDAlloc *nodo;
-       nodo = lstMalloc;
-       printf("+----------+--------+-%-20s-+---------+-------+----------+\n", "--------------------");
-       printf("|Direccion | TamaƱo | %-20s | Linea   | Fecha |   Hora   |\n", "Archivo");
-       printf("+----------+--------+-%-20s-+---------+-------+----------+\n", "--------------------");
-       while (nodo != NULL) {
-               hora = localtime(&nodo->hora);
-               printf("|%p | % 6d | %-20s | % 7d | %02d/%02d | %02d:%02d:%02d |\n", \
-                       nodo->ptr, nodo->size, nodo->file, nodo->line, hora->tm_mday, hora->tm_mon, \
-                       hora->tm_hour, hora->tm_min, hora->tm_sec);
-               printf("+----------+--------+-%-20s-+---------+-------+----------+\n", "--------------------");
-               free(hora);
-               nodo = nodo->next;
-       }
-}
diff --git a/tipo3/malloc_debug.h b/tipo3/malloc_debug.h
deleted file mode 100644 (file)
index 00ba43f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/***************************************************************************
- *            malloc_debug.h
- *
- *  Sat Aug 30 16:55:51 2003
- *  Copyright  2003  Ricardo Markiewicz
- *  rmarkie@fi.uba.ar
- ****************************************************************************/
-/*
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU Library General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/* Si ya esta definido malloc y/o free, lo dehabilito */
-
-#include <stdio.h>
-
-/* Macro para emular la funcion malloc y free */
-#define malloc(x) MD_malloc(x, __LINE__, __FILE__)
-#define free(x) MD_free(x)
-
-#ifndef _MALLOC_DEBUG_H
-#define _MALLOC_DEBUG_H 1
-
-void *MD_malloc(int size, int line, char *file);
-void MD_free(void *);
-void MD_Listar();
-
-#endif
-
index dd9ab116d10f4ae36ac5da4c770b252dcce47085..0683fc9f998b2e5d9d32fa67b21d79166a1f003a 100644 (file)
@@ -1,13 +1,13 @@
 /* archivo con bloques parametrizados y registro constante */
 
 #include "param_cte.h"
 /* archivo con bloques parametrizados y registro constante */
 
 #include "param_cte.h"
-FILE* f_block_reg;
-FILE* f_block_free;
-FILE* f_reg_exist;
 
 /** Leo un registro del archivo, devuelve cero si no lo encuentra.**/
 int leer_registro(EMUFS *emu, int ID, void *ptr, unsigned long tam_reg)
 {
 
 /** Leo un registro del archivo, devuelve cero si no lo encuentra.**/
 int leer_registro(EMUFS *emu, int ID, void *ptr, unsigned long tam_reg)
 {
+       FILE* f_block_reg;
+       //FILE* f_block_free;
+       //FILE* f_reg_exist;
        char* bloque;
        char name_f_block_reg[255];
        int block, ID_aux;
        char* bloque;
        char name_f_block_reg[255];
        int block, ID_aux;
@@ -43,7 +43,6 @@ int leer_registro(EMUFS *emu, int ID, void *ptr, unsigned long tam_reg)
        }
 
        fclose(f_block_reg);
        }
 
        fclose(f_block_reg);
-       /* TODO :Ver por que causa un SEGFAULT ACA!! */
        free(bloque);
        return 0;
 }
        free(bloque);
        return 0;
 }
@@ -52,6 +51,7 @@ int leer_registro(EMUFS *emu, int ID, void *ptr, unsigned long tam_reg)
 /*busco el ID en el archivo xxxxx.ids, para ver si puedo usar ese ID.*/
 int existe_registro(EMUFS *emu, int ID)
 {
 /*busco el ID en el archivo xxxxx.ids, para ver si puedo usar ese ID.*/
 int existe_registro(EMUFS *emu, int ID)
 {
+       FILE* f_reg_exist;
        int reg;
        char name_f_reg_exist[255];
        strcpy(name_f_reg_exist,emu->nombre);
        int reg;
        char name_f_reg_exist[255];
        strcpy(name_f_reg_exist,emu->nombre);
@@ -73,6 +73,7 @@ int existe_registro(EMUFS *emu, int ID)
 /*busca el registro ID en el archivo "block_reg.dat" y devuelve el nro de bloque en el que se encuentra*/
 int buscar_registro(EMUFS *emu, int ID)
 {
 /*busca el registro ID en el archivo "block_reg.dat" y devuelve el nro de bloque en el que se encuentra*/
 int buscar_registro(EMUFS *emu, int ID)
 {
+       FILE* f_block_reg;
        BLOCK_REG_T reg;
        char name_f_block_reg[255];
        strcpy(name_f_block_reg,emu->nombre);
        BLOCK_REG_T reg;
        char name_f_block_reg[255];
        strcpy(name_f_block_reg,emu->nombre);
@@ -225,6 +226,7 @@ int grabar_bloque(EMUFS *emu, void *ptr, int num)
 /* me devuelve el ID del bloque donde quepa un registro, y guarda en fs el espacio libre que queda en el bloque */
 int buscar_lugar(EMUFS *emu, unsigned long tam, int *fs)
 {
 /* me devuelve el ID del bloque donde quepa un registro, y guarda en fs el espacio libre que queda en el bloque */
 int buscar_lugar(EMUFS *emu, unsigned long tam, int *fs)
 {
+       FILE *f_block_free;
        BLOCK_FREE_T reg;
        char name_f_block_reg[255];
        
        BLOCK_FREE_T reg;
        char name_f_block_reg[255];
        
@@ -255,6 +257,7 @@ int buscar_lugar(EMUFS *emu, unsigned long tam, int *fs)
 /*Busco en el archivo de Id`s un Id valido para un nuevo registro*/
 int get_id(EMUFS *emu)
 {
 /*Busco en el archivo de Id`s un Id valido para un nuevo registro*/
 int get_id(EMUFS *emu)
 {
+       FILE *f_reg_exist, *f_block_reg;
        BLOCK_REG_T reg;
        int id, max = -1;
        char name_f_reg_exist[255];
        BLOCK_REG_T reg;
        int id, max = -1;
        char name_f_reg_exist[255];
index 22715c1989511332c1881884c6dc458d1a0e4d70..bb17c0613cb0c04810733fc12346e5a61606b5f2 100644 (file)
@@ -4,7 +4,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include "emufs.h"
 #include <stdlib.h>
 #include <string.h>
 #include "emufs.h"
-#include "malloc_debug.h"
 
 typedef struct block_free_t{
        int block;
 
 typedef struct block_free_t{
        int block;