Рекурсия и передача ссылок error!

 
Вот код при котором ошибка stack overflow:
int globa;
void start()
  {
   globa = 1;
   f1();
  }
int f1()
  {
   if (globa > 0) f2(globa);
  }
int f2(int& globa)
  {
   globa = 0;
   f1();
  }


А если, вместо

int f2(int& globa)

будет

int f2(int& globaGG)

, то будет There has been a critical error.

Если это ошибка, то когда выйдет следующий билд с её исправлением?

 
А почему одно и тоже имя переменной используете для глобальной и локальной?
"stack overflow" - это запросто в неконтролируемых рекурсивных вызовах словите.
В любой случае проверим код.
 
спасибо за пример. нашли ошибку при обработке референсов после рекурсивного вызова.
для того, чтобы не переполнялся стек во время рекурсии, необходимо управлять этой самой рекурсией. во-вторых, можно увеличить размер стека при помощи свойства stacksize. например, так
#property stacksize 65536
 
Вот попробуйте этот код:
int globa;

void start()
  {
   f1();
   Print("start");
  }
  
int f1()
  {
   if (globa > 0) Print("globa");
      else { globa++; f2(globa); }
   Print("f1");   
  }
  
int f2(int& GGG)
  {
   f1();
   Print("f2");
  }


Ошибка возникает когда поток возвращается из f2 в f1.


Если к примеру в первом посте (а рекурсия там управляется) добавить #property stacksize 65536 то в журнале вместо stack overflow будет not enough stack fo parameter. А если из функции f2 убрать указатель то тогда всё заработает нормально.

 
на самом деле, и то и другое сообщение вызваны нехваткой памяти для рекурсивных вызовов. не допускайте неконтролируемой рекурсии
 
Во всех приведенных примерах рекурсия контролируемая и вызывается всего один раз, а ошибки возникают всё равно. В том же примере если вместо ссылки в функции сделать просто переменную, а алгоритм не менять всё работает?