[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
pgpt3rQHeu6IB.pgp
Description: OpenPGP digital signature
Re: make-c-struct and pointer->string, Mark H Weaver, 2019/03/30