Skip to content
PdbCacheDeinit

PdbCacheDeinit

Description

Tear down the cache, releasing every cached Pe and Pdb. Safe on a zeroed struct.

Success

Returns to the caller. self is zeroed.

Failure

Function cannot fail.

Usage example (Cross-references)

Usage examples (Cross-references)
    // ---------------------------------------------------------------------------
    
    void PdbCacheDeinit(PdbCache *self) {
        if (!self)
            return;
    #    if FEATURE_PARSER_PDB
        if (pdb_cache_ok)
            PdbCacheDeinit(&pdb_cache);
    #    endif
    }
        ok            = ok && name && ZstrCompare(name, "winproc") == 0 && offset == 0x10;
    
        PdbCacheDeinit(&cache);
        DefaultAllocatorDeinit(&alloc);
        Zstr name = NULL;
        bool ok   = !PdbCacheResolve(&cache, (Zstr)missing, 0, 0x1000, &name, NULL);
        PdbCacheDeinit(&cache);
        DefaultAllocatorDeinit(&alloc);
        return ok;
            result = r1 && r2 && after_first == 1 && after_second == 1;
    
            PdbCacheDeinit(&cache);
        }
            result = rA && rB && rB2 && n2 == 2 && n3 == 2;
    
            PdbCacheDeinit(&cache);
        }
            bool      grew  = VecLen(&cache.entries) == 1 && DebugAllocatorLiveCount(&dbg) > before;
    
            PdbCacheDeinit(&cache);
            size after = DebugAllocatorLiveCount(&dbg);
            bool      r     = PdbCacheResolve(&cache, (Zstr)fx.pe_path, mbase, mbase + 0x1100, &name, &off);
            result          = r && name && ZstrCompare(name, "winproc") == 0 && off == 0;
            PdbCacheDeinit(&cache);
        }
            result = at && nat && ZstrCompare(nat, "winzero") == 0 && off == 0 && !below;
    
            PdbCacheDeinit(&cache);
        }
            result = ok && name && ZstrCompare(name, "winmax") == 0 && off == 0;
    
            PdbCacheDeinit(&cache);
        }
    
            StrDeinit(&mod);
            PdbCacheDeinit(&cache);
        }
Last updated on