Hi, Jeronimo--

Thanks for your very prompt attention!

On Fri, May 8, 2015 at 9:09 PM, Jeronimo Pellegrini <j...@aleph0.info> wrote:

>
> On Fri, May 08, 2015 at 06:48:48PM -0600, Matt Gushee wrote:
> > In addition to shadowing the builtin write-string, this write-string
> causes
> > a segfault when I attempt to use it within 'with-output-to-string' in
> csi.
> > Haven't looked into it any further yet, but that doesn't seem very good.
>

[....]

This seems to work fine:
>
> (use specialized-io)
> (define out (open-output-file "out.txt"))
> (write-string (with-output-to-string (lambda () (write "xyz") )) out)
> (close-output-port out)
>

... except that it appears to do redundant writes, and is *not* what I was
trying to do. As I said in the original post, I was attempting to use
write-one-string *within* with-output-to-string, e.g.:

    (define s
        (with-output-to-string
            (lambda () (write-one-string "Blardip!" (current-output-port))))

Mind you, I don't know if I would ever do this in a real program. My reason
for trying it was that I wanted to find out exactly what bytes were written
- I was wondering if by chance the result would be null-terminated.

I've since looked at your code, and I see that you've implemented
write-one-string as a foreign lambda calling fprintf; so I suppose the
reason for the segfault was that Chicken string ports are not compatible
with fprintf. I guess that's a fair tradeoff for improved performance, but
I would suggest that you add a LIMITATIONS section to the documentation,
explaining that certain procedures are unsafe, along with whatever details
of that unsafety you are aware of.

Also, one more minor issue with the documentation: I happened to notice
that you tagged

specialized-io-error
+specialized-io-string-buffer-size+

as [parameter]. But they are not parameters in the Chicken Scheme sense
[ref: http://api.call-cc.org/doc/chicken/parameters ], they're just global
variables. It might be a good idea to make them parameters, since then they
would be thread-local. Either way, they should be documented correctly.

Thanks for your work!

--
Matt Gushee
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to