Ciao

Sto testando un mio programma tramite una funzione di test che mi è stata fornita per il progetto che sto realizzando. Praticamente come parte il primo test mi dà questo errore:

codice:
Test CREATE
Test:[10101] Peso:[3] - [CREATE: nome NULL]
Errore [-1] in [CreateDatabaseFile]-->[Nome DB nullo o non valido o NumFields<=0]
*** glibc detected *** free(): invalid pointer: 0xbfc04470 ***
Abortito
il quale dovrebbe essere relativo a questa parte di codice: (scritta da me)

codice:
int CreateDatabaseFile(char *Name, int NumFields, FIELD_DATA_t *FieldData){
    int test;
    int i;
    char *finale;
    int headerlen;
    header *h;
    if((Name==NULL) || (cercaErr(Name)==1) || (NumFields<=0)){
       char Err1[256];
       (void) sprintf(Err1, "Nome DB nullo o non valido o NumFields<=0");
       LPC_GestioneErrore(LPC_BAD_ARG, "CreateDatabaseFile", Err1);
       free(Err1);
       free(h);
       free(finale);
       free(FieldData);
       free(Name);
       return LPC_BAD_ARG;
    }
Il sorgente del della funzione di test invece è questo: (metto solo la parte interessata)

codice:
void TestCreate(void)
{
	int ret= 0;
	int NumFields = 0;
	FILE *fp;
	FIELD_DATA_t FieldData[MAX_NUM_FIELDS];
	int len, len1;
	char buf[500], buftest[500];

	printf("Test CREATE\n");
    
// Test sul nome
	// null
	test[numtest].testid = 10101;
	test[numtest].weight = 3;
	strcpy(test[numtest].desc, "CREATE: nome NULL");
	printf("Test:[%d] Peso:[%d] - [%s]\n", test[numtest].testid, test[numtest].weight,test[numtest].desc);
	ret = CreateDatabaseFile(NULL, NumFields, &FieldData[0]);
	printf("Ritorno della create: [%d]\n\n", ret);
	if (ret != LPC_OK)
		test[numtest].passed = 1;
	numtest++;
Non riesco a capire quale free() gli dà fastidio.