Si crees que vamos a adivinar el problema con solo leer código estás equivocado, no podemos ejecutar mentalmente tu código para descubrir lo que sucede.
Te recuerdo que estás es un foro técnico, no de clarividencia, y como foro técnico es indispensable conocer los detalles técnicos de tu problema, si arroja errores tu código, si se comporta distinto, etc.
También debes hacer notar todo lo que hayas descubierto depurando tu código, ¿si depuras tu código verdad?
Ya que sin información es igual a quedarse mirando al monitor en busca de nada.
PDTA: aprende a usar el foro, el editor del foro, etc.