I *think* I may have stopped up the problem.
I changed how I write affects slightly:
naf = alloc_perm(sizeof(*naf));
naf->type = 0;
naf->level = obj->level;
naf->duration = -1;
naf->location = afftype;
naf->modifier = counter;
naf->bitvector = 0;
naf->next = obj->affected;
obj->affected = naf;
The only considerable change is how I assign memory. Before I did
naf = malloc(sizeof(*naf));
and now it is
naf = alloc_perm(sizeof(*naf));
It now reports no "cannot find paf" in the logs, no matter how much I twist its
arm or pile numerous affects onto it.
Will keep you posted (if you're interested. If not, then continue to ignore my
spammy posts *grin*).