>> If gl.UniformMatrix4fv() did store the value and the value wasn't also >> stored >> somewhere on the Lua side, then there is already a bug since the GC would >> free >> the value which might still be in use by the C code. > > No, there's a guarantee that arguments to a C function call are > not collected before the C call returns. Still I do not understand why this (C function call) makes the value escape from the code block? I thought that value escapes only if it needs to remain somewhere once block is completed. Here value doesn't need to remain once the loop is complete. Cheers, -- Adam