digitalmars.D - std.c.stdio FILE * under Linux
- James Dunne (14/14) Dec 05 2004 I've been wrestling with libvorbisfile's C API which requires use of
- James Dunne (7/21) Dec 05 2004 Yeah, so, I'm a retard. It wasn't apparent that the libvorbisfile took ...
I've been wrestling with libvorbisfile's C API which requires use of std.c.stdio's old FILE *s. This works fine when I fopen() and then fclose()... However, if I try to fopen() again, the program runs into an infinite loop, and I don't know where since debugging is terrible. I received slightly more success with std.gc.addRoot(my FILE *) after fopen() which got rid of the infinite loop but after 3 iterations of this i got a seg-fault while trying to read from the file. This leads me to believe its a garbage collector issue that is either a) a bug, or b) my fault for not fully understanding what the hell I'm doing :-P. I'll try to write a simple test case to demonstrate what I'm saying here. If you know what I'm trying to get at, please let me know how to work correctly with std.c.stdio and the garbage collector! Regards, James Dunne
Dec 05 2004
In article <cp0jpm$10r5$1 digitaldaemon.com>, James Dunne says...I've been wrestling with libvorbisfile's C API which requires use of std.c.stdio's old FILE *s. This works fine when I fopen() and then fclose()... However, if I try to fopen() again, the program runs into an infinite loop, and I don't know where since debugging is terrible. I received slightly more success with std.gc.addRoot(my FILE *) after fopen() which got rid of the infinite loop but after 3 iterations of this i got a seg-fault while trying to read from the file. This leads me to believe its a garbage collector issue that is either a) a bug, or b) my fault for not fully understanding what the hell I'm doing :-P. I'll try to write a simple test case to demonstrate what I'm saying here. If you know what I'm trying to get at, please let me know how to work correctly with std.c.stdio and the garbage collector! Regards, James DunneYeah, so, I'm a retard. It wasn't apparent that the libvorbisfile took over the FILE * and fclose()'d when i called ov_clear() on its related context. So I was essentially double fclose()-ing the FILE *. Geez... Ignore me. It works fine now :). Regards, James Dunne
Dec 05 2004