Карочи, если что-то непонятно — выводи содержимое стека. Очень полезное занятие.
Точно так же, если в луа тебе что-то непонятно — выводи содержимое таблиц, входные и выходные данные функций и промежуточную фигню.
да, я так и сделал, с помощью вашей функции. И это прояснило ситуацию - количество NILов всё время росло, т.к. я делал lua_pop только тогда, когда lua_isnumber(L, -1) == true, а Lua скрипт не всегда что-то возвращал, и в итоге на стеке копились NILы