xml_ReaderReset(reader, NULL) followed by xml_ReaderDelete(reader) lead
to a double free.
xml_ReaderReset(reader, stream) would leak the module upon error.
*/
void xml_ReaderDelete(xml_reader_t *reader)
{
- module_unneed(reader, reader->p_module);
+ if (reader->p_stream)
+ module_stop(reader, reader->p_module);
+ module_release(reader->p_module);
vlc_object_release(reader);
}
reader->p_stream = stream;
if ((stream != NULL) && module_start(reader, reader->p_module))
{
+ module_release(reader->p_module);
vlc_object_release(reader);
return NULL;
}