mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-22 11:41:38 +00:00
Correctly emit class and category symtab references.
This commit is contained in:
parent
c4f364fd37
commit
fa6b8d773c
1 changed files with 15 additions and 4 deletions
|
@ -1100,11 +1100,20 @@ emit_symtab_defs (def_t *def, void *data, int index)
|
||||||
da->cls_def_cnt + da->cat_def_cnt);
|
da->cls_def_cnt + da->cat_def_cnt);
|
||||||
|
|
||||||
if (index < da->cls_def_cnt) {
|
if (index < da->cls_def_cnt) {
|
||||||
class_t *cl = da->classes[index];
|
class_t **cl;
|
||||||
EMIT_DEF (def->space, D_INT (def), cl->def);
|
for (cl = da->classes; *cl; cl++)
|
||||||
|
if ((*cl)->def && !(*cl)->def->external)
|
||||||
|
if (!index--)
|
||||||
|
break;
|
||||||
|
EMIT_DEF (def->space, D_INT (def), (*cl)->def);
|
||||||
} else {
|
} else {
|
||||||
category_t *ca = da->categories[index - da->cls_def_cnt];
|
category_t **ca;
|
||||||
EMIT_DEF (def->space, D_INT (def), ca->def);
|
index -= da->cls_def_cnt;
|
||||||
|
for (ca = da->categories; *ca; ca++)
|
||||||
|
if ((*ca)->def && !(*ca)->def->external)
|
||||||
|
if (!index--)
|
||||||
|
break;
|
||||||
|
EMIT_DEF (def->space, D_INT (def), (*ca)->def);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1150,6 +1159,8 @@ class_finish_module (void)
|
||||||
data.cls_def_cnt + data.cat_def_cnt);
|
data.cls_def_cnt + data.cat_def_cnt);
|
||||||
symtab_def = emit_structure ("_OBJ_SYMTAB", 's', symtab_struct, 0, &data,
|
symtab_def = emit_structure ("_OBJ_SYMTAB", 's', symtab_struct, 0, &data,
|
||||||
st_static);
|
st_static);
|
||||||
|
free (data.classes);
|
||||||
|
free (data.categories);
|
||||||
|
|
||||||
module_sym = make_symbol ("_OBJ_MODULE", &type_module, pr.far_data,
|
module_sym = make_symbol ("_OBJ_MODULE", &type_module, pr.far_data,
|
||||||
st_static);
|
st_static);
|
||||||
|
|
Loading…
Reference in a new issue