Hi HSE
You are correct. I would suggest to change the resetting block to the top to avoid the push/pop ecx like
Method LinkedList.Clear, uses esi
SetObject ecx
mov esi, [ecx].LinkedList.pFirstNode
mov [ecx].dCount, 0
mov [ecx].pFirstNode, NULL
mov [ecx].pLastNode, NULL
mov [ecx].pCurrentNode, NULL
.while esi != NULL
Destroy [esi].LINKED_NODE.pObject ;Save dispose of linked Object
push [esi].LINKED_NODE.pLinkFwrd ;Preserve address of next node
MemFree esi ;Free the linked node
pop esi ;Restore address of next node
.endw
MethodEnd
Biterider