X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=functions%2Fstdio%2Ffclose.c;h=0b4233034afe5b79b7fe0bccfa8b2c477e8b2654;hb=d9e48b611b63bcfc55727463cb9d9d0e87a7a405;hp=f633de3e8cf1364cf7583dfa52e635e600fe4d58;hpb=188eee8e94ce6e968e0791bae1c7682dafe9ec9c;p=pdclib 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." );