[PD-dev] [pure-data:svn] New commit [r17643] by mrpeach

Martin Peach chakekatzil at gmail.com
Thu Oct 12 20:03:45 CEST 2017


On Thu, Oct 12, 2017 at 4:38 AM, IOhannes m zmoelnig <zmoelnig at iem.at>
wrote:

> On 2017-10-11 23:00, Pure Data Computer Music System SVN repository wrote:
> > Don't use sys_fopen with MSVC as its FILE struct is not compatible.
>
> hmm, i'm pretty sure this is the wrong approach.
> the sole purpose of sys_fopen() is to help Windows users (as it wraps
> the use of non-ascii filenames!). on non-windows platforms sys_fopen()
> is basically identical to fopen().
>
> i guess the problem you are having is hat the FILE handle returned by
> _fopen() depends on the libC implementation, and if Pd has been linked
> against a different libc implementation than midifile, they might be
> "incompatible".
>

Precisely. I have been bitten by that before.

e.g. this is the reason why Pd provides a sys_fclose() (since running
> flose() on a sys_fopen()ed file would leak ressources).
>
> since there's a number of externals that are successfully using
> sys_fopen()/sys_fclose(), wonder what goes wrong in midifile.
> what exactly is meant by "incompatibility"?
>
>
It's only sys_fclose() (and things that use FILE) that doesn't work,
calling Pd functions like post() cause no trouble.

since when does the problem exist? (e.g. did something change in the Pd
> build process that triggered that error?)
>
>
Since yesterday I've been trying to build midifile.c for Windows7 using
Visual Studio 2017. When I run the resulting dll using midifile-help.pd it
crashes Pd (0.48.0 installed from Miller's site) whenever sys_fopen() is
called. Doing the same thing using fopen() from stdio.h works fine.

The makefile in Miller's distribution has
VCSDK = "C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A"
VC9 = "C:\\Program Files\\Microsoft Visual Studio 9.0\\VC"
MSCC = cl
MSLN = link

I'm using a different version of the same MS tools and building from the
IDE. Possibly the c runtime is not the same? I would have expected a
conflict if using MinGW.

Here is some info relevant to the situation, bur I'm not sure what to do
with it:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries


is there some bug-report against Pd about sys_fclose() being unusable on
> W32?
>
>
> fgasmr
> IOhannes
>
>
> _______________________________________________
> Pd-dev mailing list
> Pd-dev at lists.iem.at
> https://lists.puredata.info/listinfo/pd-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20171012/64cfb7cb/attachment.html>


More information about the Pd-dev mailing list