El código exactamente es el que te he descrito, sólo cambia el nombre de la variable. No tengo nada más.
En la imagen os muestro el CPU View de toda la parte de finalization:
donde he remarcado en verde el incremento del contador (previamente había sido decrementado por el initialization) y su comparación con cero; en marrón la comparación del if y en naranja la ejecución del FreeAndNil.
Estaría perfecto si a la dirección $DD6D0C (donde tengo el punto de ruptura) entrase tantas veces como a entrado a la parte de initialization, porque incrementaría las mismas veces el contador, y al final la comparación haría que no saltase. Pero sólo llega ahí una única vez, mientras que al initialization entra varias, por eso nunca llega a hacer la comparación del if.
He probado también a quitar el if, pero su comportamiento es el mismo (era de esperar, dado que nunca había llegado a ejecutar dicho if).
¿Alguna idea?
Un saludo,
LoPiTaL