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;
}
Questa è tutta la funzione. Perchè pa[s - 1] = p; non è corretto?