guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make-c-struct and pointer->string


From: David Pirotte
Subject: Re: make-c-struct and pointer->string
Date: Fri, 29 Mar 2019 05:48:40 -0300

Hello Neil,

> I guess it may be GC.  I've had problems with code like
> 
>    (procedure->pointer void (lambda (...) ...) args...)
> 
> because procedure->pointer does not protect the (lambda ...) from being GC'd.
> 
> For example:
> http://git.savannah.nongnu.org/cgit/ossaulib.git/commit/?id=1d31a87b53e9375b5fdd5120b7d409e6dde6aa47
> 
> I wonder if there's a similar problem here with the string->pointer data.

Thanks for your help!

Following your explanation and example, I tried this and thought it would work 
then,
but it also failed:

GNU Guile 2.2.4.1-cdb19
Copyright (C) 1995-2017 Free Software Foundation, Inc.

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.

Enter `,help' for help.
scheme@(guile-user)> ,use (system foreign)
scheme@(guile-user)> (define str-1 "Hello")
scheme@(guile-user)> (define str-2 "there!")
scheme@(guile-user)>  (make-c-struct (list '* '*) (list (string->pointer str-1) 
(string->pointer str-2)))
$2 = #<pointer 0x55ae02e57830>
scheme@(guile-user)> (parse-c-struct $2 (list '* '*))
$3 = (#<pointer 0x55ae02f9e3c0> #<pointer 0x55ae02f8b050>)
scheme@(guile-user)> (map pointer->string $3)
$4 = ("" "`\v?\x02?U")

Cheers,
David

Attachment: pgpt3rQHeu6IB.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]