Commit 76a8dee9 authored by Diego Biurrun's avatar Diego Biurrun

Properly check for and return errors from close().

Also fix a memory leak on close() failure.
parent 7de33d12
......@@ -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 */
......
......@@ -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;
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment