¿Porqué se cambia el valor de un argumento si no se establece ésto por código?
Sucede que tengo una llamada a una subrutina con varios datos como argumentos (llamémosle: Sub A(1, 2, 3).
Esa subrutina (A) ejecuta otras subrutinas (sub B; sub C; sub N).
Antes de terminar de ejecutarse la subrutina (A), los valores que le he pasado como argumento se mantienen intactos con excepción de uno (supongamos el argumento 2), que cambia solito.
Para solucionar el problema he guardado el valor de ese argumento en una variable antes que se modifique sólo, pero mi pregunta es, ¿Por qué se modifica sólo?.
He seguido el código paso a paso, y puedo detectar que éste dato se cambia durante la ejecución del la subrutina (B), pero el problema es que no puedo ver cuándo se modifica ya que el valor (2) no tiene relación alguna con la subrutina (B). Es más, ni siquiera la paso como argumento, sí en cambio paso otros datos y ninguno sufre modificación.
Es raro, pero el problema es que si yo no analizo exaustivamente cada resultado y dato manipulado de manera constante, éste tipo de error no se detecta, y cuando el trabajo es para otras personas, no hay margen de error, sobretodo si manipula información numérica importante.