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.