[Lazarus] SEGFAULT: difference between pointer and dynarray?

xrfang xrfang at gmail.com
Sun Dec 30 04:09:33 CET 2012


The end of array mark is added by lua52.pas, if you read the source code...  My problem is solved if I remove the overloaded luaL_newlib function and use only the original pointer version, i.e.

var lib: array of luaL_Reg;
luaL_newlib(L, PluaL_Reg(lib));

It seems that while converting from dynamic array to pointer, the compiler knows to point to the first element of the array, not the structure.  Could anyone confirm this behavior?

The remaining problems are: 1) why the lupas program works well even with the problematic overloaded version?  I tested on Windows 7 (32bit), both programs failed.  2) I will email the author of lua52.pas to investigate the overloaded functions, and personally I will suggest to not use overloading at all.

Shannon

在 六, 12月 29, 2012 at 9:39 下午,leledumbo <leledumbo_cool at yahoo.co.id> 写道:
Reading luaL_newlib documentation and lua52.pas implementation of it (it's a 
macro in the original C code), I see that you need a sentinel value to mark 
the end of the array by putting nil in the name part. I was already skeptic 
since the API doesn't mention the number of elements in the array as 
commonly required by a C function. 



-- 
View this message in context: http://free-pascal-lazarus.989080.n3.nabble.com/Lazarus-SEGFAULT-difference-between-pointer-and-dynarray-tp4028296p4028310.html 
Sent from the Free Pascal - Lazarus mailing list archive at Nabble.com. 

-- 
_______________________________________________ 
Lazarus mailing list 
Lazarus at lists.lazarus.freepascal.org 
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20121230/10a7459c/attachment-0003.html>


More information about the Lazarus mailing list