RtlpFreeAllAtom
VOID __stdcall RtlpFreeAllAtom(_RTL_ATOM_TABLE_ENTRY *AtomEntry, _RTL_ATOM_TABLE *AtomTable){
_RTL_ATOM_TABLE_ENTRY *v3;
_RTL_ATOM_TABLE_REFERENCE *p_Reference;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v6;
_RTL_ATOM_TABLE_ENTRY *a;
_RTL_ATOM_TABLE_ENTRY **v8;
_RTL_ATOM_TABLE_REFERENCE *v9;
a = AtomEntry;
v8 = 0i64;
if( RtlpHashStringToAtom(AtomTable, AtomEntry->Name, 0, &v8, 0i64, &v9, &a) >= 0 )
{
v3 = a;
if( a )
{
if( v8 )
*v8 = a->HashLink;
p_Reference = &v3->Reference;
while( 1 )
{
Flink = p_Reference->LowBoxList.Flink;
if( (_RTL_ATOM_TABLE_REFERENCE *)p_Reference->LowBoxList.Flink == p_Reference )
break;
if( (_RTL_ATOM_TABLE_REFERENCE *)Flink->Blink != p_Reference
|| (v6 = Flink->Flink, Flink->Flink->Blink != Flink) )
{
__fastfail(3u);
}
p_Reference->LowBoxList.Flink = v6;
v6->Blink = &p_Reference->LowBoxList;
RtlpFreeAtom(Flink);
}
RtlpFreeHandleForAtom(AtomTable, v3);
RtlpFreeAtom(v3);
}
}
}Referenced by:
RtlpDereferenceAtom