[m-users.] Segmentation violation on FFI wrapper for linenoise-ng

Sean Charles (emacstheviking) objitsu at gmail.com
Sat Jun 19 23:24:24 AEST 2021


WAAAAAT!

:facepalm:

I took that print line out, removed ’the fix’/…….I don’t think I need tell you how it went.

Sometimes it never fails to baffle me, after 35 years, that sometimes you can fail to read and understand your own code.

:D

Sigh… you live and learn. I hope.

Thanks Julien, I am going outside to self-flagellate with some nettles I mowed down this morning…..


> On 19 Jun 2021, at 14:21, Julien Fischer <jfischer at opturion.com> wrote:
> 
> 
> 
> On Sat, 19 Jun 2021, Sean Charles (emacstheviking) wrote:
> 
>> Hi Julien,
>> 
>> Yes, the C++ code uses fgets() which returns NULL on end of file, one is supposed to then use feof() I guess but I didnt write that code.
>> 
>> As I am checking the value of LineNull first and foremost on return, I
>> didn’t (still don’t!) see the harm in what I have done i.e. I only use
>> the value in Line to call execute() with if LineNull is 0 i.e. there
>> is something, even an empty line, in it. If you press RETURN, it
>> allocates a zero length buffer but that is still a non-null address
>> which should be fine, and seems to be the case.
> 
> Your Mercury code executes the following line
> 
>    io.format("LNG: NULL:%d, len:%d, \n", [i(LineNull), i(length(Line))], !IO),
> 
> regardless of what the value of LineNull is.  I suspect the call to
> length/1 is causing the segmentation fault, since in the case where
> LineNull is 1, Line is not set by the foreign code.
> 
> Julien.



More information about the users mailing list