X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2Ffclose.c;h=0b4233034afe5b79b7fe0bccfa8b2c477e8b2654;hb=18af9d0a4cd252433e0cbd5daf4640e325c9d0ab;hp=f633de3e8cf1364cf7583dfa52e635e600fe4d58;hpb=d6979bd57c335731f963a2811c8dea83a71f6c30;p=pdclib.old diff --git a/functions/stdio/fclose.c b/functions/stdio/fclose.c index f633de3..0b42330 100644 --- a/functions/stdio/fclose.c +++ b/functions/stdio/fclose.c @@ -29,12 +29,13 @@ int fclose( struct _PDCLIB_file_t * stream ) _PDCLIB_close( stream->handle ); if ( previous != NULL ) { - previous->next = current->next; + previous->next = stream->next; } else { - _PDCLIB_filelist = current->next; + _PDCLIB_filelist = stream->next; } + free( stream ); return 0; } previous = current; @@ -51,7 +52,6 @@ int fclose( struct _PDCLIB_file_t * stream ) int main( void ) { #ifndef REGTEST - /* FIXME: This is basically fopen() checking. Flushing and buffer-freeing is not checked. */ struct _PDCLIB_file_t * file1; struct _PDCLIB_file_t * file2; TESTCASE( _PDCLIB_filelist == NULL ); @@ -66,7 +66,7 @@ int main( void ) TESTCASE( fclose( file1 ) == 0 ); TESTCASE( _PDCLIB_filelist == file2 ); TESTCASE( fclose( file2 ) == 0 ); - TESTCASE( _PDCLIB_filelist == NULL ); /* FIXME: fails */ + TESTCASE( _PDCLIB_filelist == NULL ); system( "rm testfile1 testfile2" ); #else puts( " NOTEST fclose() test driver is PDCLib-specific." );