libctf: don't lose track of all valid types upon serialization
One pattern which is rarely done in libctf but which is meant to work is this: ctf_create(); ctf_add_*(); // add stuff ctf_type_*() // look stuff up ctf_write_*(); ctf_add_*(); // should still work ctf_type_*() // so should this ctf_write_*(); // and this i.e., writing out a dict should not break it and you should be able to do everything you could do with it before, including writing it out again. Unfortunately this has been broken for a while because the field which indicates the maximum valid type ID was not preserved across serialization: so type additions after serialization would overwrite types (obviously disastrous) and type lookups would just fail. Fix trivial. libctf/ChangeLog 2021-03-18 Nick Alcock <nick.alcock@oracle.com> * ctf-serialize.c (ctf_serialize): Preserve ctf_typemax across serialization.
This commit is contained in:
parent
755ba58ebe
commit
2a05d50e90
2 changed files with 6 additions and 0 deletions
|
@ -1113,6 +1113,7 @@ ctf_serialize (ctf_dict_t *fp)
|
|||
nfp->ctf_dynsyms = fp->ctf_dynsyms;
|
||||
nfp->ctf_ptrtab = fp->ctf_ptrtab;
|
||||
nfp->ctf_pptrtab = fp->ctf_pptrtab;
|
||||
nfp->ctf_typemax = fp->ctf_typemax;
|
||||
nfp->ctf_dynsymidx = fp->ctf_dynsymidx;
|
||||
nfp->ctf_dynsymmax = fp->ctf_dynsymmax;
|
||||
nfp->ctf_ptrtab_len = fp->ctf_ptrtab_len;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue