diff --git a/libIRDB/include/core/fileir.hpp b/libIRDB/include/core/fileir.hpp index b540d5287a2fc1e00474365653a2e52dac72f7d2..9cfa4dd2ab166e7bc68f236dd1abae53a0b6c12a 100644 --- a/libIRDB/include/core/fileir.hpp +++ b/libIRDB/include/core/fileir.hpp @@ -123,9 +123,9 @@ class FileIR_t : public BaseObj_t RelocationSet_t relocs; TypeSet_t types; DataScoopSet_t scoops; - VariantID_t progid; + VariantID_t* progid; // Not owned by fileIR ICFSSet_t icfs_set; - File_t* fileptr; + File_t* fileptr; // Owned by variant, not fileIR EhProgramSet_t eh_pgms; EhCallSiteSet_t eh_css; diff --git a/libIRDB/include/core/variantid.hpp b/libIRDB/include/core/variantid.hpp index f9536cf41028f1a0ffd2abd07a5baeacef067662..7a6390484a83660d124f0c24fd588ca9c55f7d61 100644 --- a/libIRDB/include/core/variantid.hpp +++ b/libIRDB/include/core/variantid.hpp @@ -49,10 +49,10 @@ class VariantID_t : public BaseObj_t File_t* GetMainFile() const; friend std::ostream& libIRDB::operator<<(std::ostream& out, const VariantID_t& pid); - friend class FileIR_T; - friend class Function_t; - friend class AddressID_t; - friend class Instruction_t; + //friend class FileIR_T; + //friend class Function_t; + //friend class AddressID_t; + //friend class Instruction_t; db_id_t GetOriginalVariantID() const { return orig_pid;} diff --git a/libIRDB/src/core/fileir.cpp b/libIRDB/src/core/fileir.cpp index 787fb0c554d9eaabc194304a0d1bc43b4271ee4b..9be39c644e8c93973b9247b87af6a35c5ce4f7ab 100644 --- a/libIRDB/src/core/fileir.cpp +++ b/libIRDB/src/core/fileir.cpp @@ -86,14 +86,14 @@ FileIR_t::FileIR_t(const VariantID_t &newprogid, File_t* fid) : BaseObj_t(NULL) { orig_variant_ir_p=NULL; - progid=newprogid; + progid=(VariantID_t*) &newprogid; if(fid==NULL) fileptr=newprogid.GetMainFile(); else fileptr=fid; - if(progid.IsRegistered()) + if(progid->IsRegistered()) { ReadFromDB(); SetArchitecture(); diff --git a/libIRDB/src/core/generate_spri.cpp b/libIRDB/src/core/generate_spri.cpp index c70a735171424d8ae2d8f4a0c1c4b62f0cf85411..b45d6fd4551415d706c77e5cc770b75b1b8652fd 100644 --- a/libIRDB/src/core/generate_spri.cpp +++ b/libIRDB/src/core/generate_spri.cpp @@ -837,7 +837,7 @@ static void generate_insn_to_insn_maps(FileIR_t *fileIRp, FileIR_t *orig_fileIRp // void FileIR_t::GenerateSPRI(ostream &fout, bool with_ilr) { - VariantID_t orig_varidp(progid.GetOriginalVariantID()); + VariantID_t orig_varidp(progid->GetOriginalVariantID()); assert(orig_varidp.IsRegistered()==true); for( diff --git a/libIRDB/src/core/variantid.cpp b/libIRDB/src/core/variantid.cpp index ac45b0d0e44aecd4baede4bce38b358b324a4ca4..4d6f4878ed51cf8db5f3fcfeabc611a706a11cb3 100644 --- a/libIRDB/src/core/variantid.cpp +++ b/libIRDB/src/core/variantid.cpp @@ -40,13 +40,10 @@ VariantID_t::VariantID_t() : VariantID_t::~VariantID_t() { - for(std::set<File_t*>::iterator - it = files.begin(); - it != files.end(); - ++it - ) + cout << "VARIANT ID DESTRUCTOR" << endl; + for(auto it : files) { - delete *it; + delete it; } }