[libdvdcss-devel] Properly check for and return errors from close().
[email protected] (Diego Biurrun) Fri, 14 Nov 2014 16:45:57 +0100 (CET)
| Newsgroups | gmane.comp.video.videolan.libdvdcss,gmane.comp.video.videolan.libdvdcss.devel |
|---|---|
| Message-ID | <[email protected]> |
libdvdcss | branch: master | Diego Biurrun <[email protected]> | Wed Nov 12 23:53:41 2014 +0100| [76a8dee9721ac948f4e008f80ffe09c43b899586] | committer: Diego Biurrun Properly check for and return errors from close(). Also fix a memory leak on close() failure. > http://git.videolan.org/gitweb.cgi/libdvdcss.git/?a=commit;h=76a8dee9721ac948f4e008f80ffe09c43b899586 --- src/device.c | 11 +++++++---- src/libdvdcss.c | 7 +------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/device.c b/src/device.c index ddb216e..d62561c 100644 --- a/src/device.c +++ b/src/device.c @@ -426,13 +426,16 @@ int dvdcss_close_device ( dvdcss_t dvdcss ) free( dvdcss->p_readv_buffer ); dvdcss->p_readv_buffer = NULL; dvdcss->i_readv_buf_size = 0; - - return 0; #else - close( dvdcss->i_fd ); + int i_ret = close( dvdcss->i_fd ); + if( i_ret < 0 ) + { + print_error( dvdcss, "Failed to close fd, data loss possible." ); + return i_ret; + } +#endif return 0; -#endif } /* Following functions are local */ diff --git a/src/libdvdcss.c b/src/libdvdcss.c index 44d740b..0eb2298 100644 --- a/src/libdvdcss.c +++ b/src/libdvdcss.c @@ -781,15 +781,10 @@ LIBDVDCSS_EXPORT int dvdcss_close ( dvdcss_t dvdcss ) i_ret = dvdcss_close_device( dvdcss ); - if( i_ret < 0 ) - { - return i_ret; - } - free( dvdcss->psz_device ); free( dvdcss ); - return 0; + return i_ret; } /** _______________________________________________ libdvdcss-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libdvdcss-devel