[vlc-devel] [PATCH 02/11] demux: wav: refactor chunk skip
Thomas Guillem
thomas at gllm.fr
Thu Mar 12 15:05:43 CET 2020
---
modules/demux/wav.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/modules/demux/wav.c b/modules/demux/wav.c
index c68f5e916eb..4f483df10c7 100644
--- a/modules/demux/wav.c
+++ b/modules/demux/wav.c
@@ -116,6 +116,17 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
i_query, args );
}
+static int ChunkSkip( demux_t *p_demux, size_t i_size )
+{
+ if( vlc_stream_Read( p_demux->s, NULL, i_size ) != (ssize_t)i_size )
+ return VLC_EGENERIC;
+
+ if( (i_size & 1) && vlc_stream_Read( p_demux->s, NULL, 1 ) != 1 )
+ return VLC_EGENERIC;
+
+ return VLC_SUCCESS;
+}
+
static int ChunkFind( demux_t *p_demux, const char *fcc, unsigned int *pi_size )
{
const uint8_t *p_peek;
@@ -143,10 +154,7 @@ static int ChunkFind( demux_t *p_demux, const char *fcc, unsigned int *pi_size )
return VLC_SUCCESS;
}
- /* Skip chunk */
- if( vlc_stream_Read( p_demux->s, NULL, 8 ) != 8 ||
- vlc_stream_Read( p_demux->s, NULL, i_size ) != (int)i_size ||
- ( (i_size & 1) && vlc_stream_Read( p_demux->s, NULL, 1 ) != 1 ) )
+ if( ChunkSkip( p_demux, i_size + 8 ) != VLC_SUCCESS )
return VLC_EGENERIC;
}
}
@@ -302,8 +310,7 @@ static int Open( vlc_object_t * p_this )
p_sys->i_data_size = (int64_t)1 << 62;
else
p_sys->i_data_size = i_data_size;
- if( vlc_stream_Read( p_demux->s, NULL, i_size ) != (int)i_size ||
- ( (i_size & 1) && vlc_stream_Read( p_demux->s, NULL, 1 ) != 1 ) )
+ if( ChunkSkip( p_demux, i_size ) != VLC_SUCCESS )
goto error;
}
--
2.20.1
More information about the vlc-devel
mailing list