- for (s = &nbuf; symbol_size; symbol_size -= sizeof(NLIST)) {
- if (fread((char *)s, sizeof(NLIST), 1, fsym) != 1)
- goto done2;
- if (!s->_strx || s->n_type&N_STAB)
- continue;
- if (fseek(fstr, strings_offset + s->_strx, SEEK_SET))
- goto done2;
- (void)fread(sbuf, sizeof(sbuf[0]), maxlen, fstr);
- for (p = list; ISVALID(p); p++)
- if (!strcmp(p->_name, sbuf)) {
- p->n_value = s->n_value;
- p->n_type = s->n_type;
- p->n_desc = s->n_desc;
- p->n_other = s->n_other;
- if (!--entries)
- goto done2;
- }
+ if (soff == 0 || (s->n_type & N_STAB) != 0)
+ continue;
+ for (p = list; !ISLAST(p); p++)
+ if (!strcmp(&strtab[soff], p->n_un.n_name)) {
+ p->n_value = s->n_value;
+ p->n_type = s->n_type;
+ p->n_desc = s->n_desc;
+ p->n_other = s->n_other;
+ if (--nent <= 0)
+ break;
+ }
+ }