Philipp Kutin wrote: > > av = ffi.new "volatile char [12]" > > aa = ffi.new "char [12]" > > ffi.copy(aa, av, 1) > stdin:1: bad argument #2 to 'copy' (cannot convert 'volatile char > [12]' to 'const void *') This is in line with C semantics: #include <string.h> void foo(char *a, volatile char *b) { memcpy(a, b, 4); } $ gcc -c test.c test.c: In function 'foo': test.c:5:3: warning: passing argument 2 of 'memcpy' discards 'volatile' qualifier from pointer target type [enabled by default] In file included from test.c:1:0: /usr/include/string.h:42:14: note: expected 'const void * __restrict__' but argument is of type 'volatile char *' Ok, so GCC treats it as a warning and the FFI treats it as an error. But implicit removal of qualifiers violates C semantics. --Mike