Questa è tutta la funzione. Perchè pa[s - 1] = p; non è corretto?codice:struct comp *comps = 0; struct comp *ccompx(const char name[]) { struct comp *p; struct comp *pa; glob = 0; pa = (struct comp*) malloc(sizeof(struct comp)); if(!pa) { puts("Ricerca interrotta."); return 0; } int s; for(p = comps, s = 1; p; p = p->n, s++) { int i = 0; for(; name[i] != p->name[i]; i++); if(p && name[i] == p->name[i]) { int a = 1; for(; name[i + a] == p->name[i + a]; a++); if(a == strlen(name)) { pa[s - 1] = p; // errore glob++; realloc(pa, sizeof(struct comp) * s + 1); if(!pa) { puts("Ricerca non completata.") goto ret; } } return 0; } } ret: return pa; }