[DVDnav-discuss] [PATCH] Initialize dvd_reader_t struct in DVDOpenImageFile

Richard Hulme peper03 at yahoo.com
Sun Feb 2 12:00:52 CET 2014


On 01/02/14 15:21, Dominik 'Rathann' Mierzejewski wrote:
> Hello Richard,
>
> On Sunday, 26 January 2014 at 17:13, Richard Hulme wrote:
>> Hi,
>>
>> This is a patch I found in MythTV's copy of libdvdread that seems
>> like it could/should be upstream too.  It ensures that the
>> dvd_reader_t struct is initialized (e.g. the css_state field is
>> currently undefined if 'have_css' is false).
>
> Thanks for forwarding the patch.
>
> If I understand correctly, with that memset in place, some of the
> subsequent assignments
>    dvd->path_root = NULL;
> [...]
>    dvd->udfcache = NULL;
> [...]
>    dvd->css_title = 0;
>
> are not necessary anymore. Actually, that case of leaving css_state
> uninitialized is a genuine bug, but I'm not sure if using memset
> is the right solution. Does anyone else have thoughts on this case?

Hi Dominik,

If I had written that patch myself, I think I might have just gone with 
explicitly initialising have_css to zero, just to fit in with the rest 
of the existing code and to keep the changes to a minimum.

The two other possibilities I see are either staying with memset or 
using calloc instead of malloc/memset.  In either case the explicit 
initialisations to zero/NULL are not necessary.

To my eyes, calloc or memset have the advantage of ensuring the entire 
structure is initialised, but there is only have_css which is not 
currently being initialised and the structure is unlikely to grow, so 
that argument in favour of calloc or memset is not as strong as it could 
be.  Also, not all fields should be zero (but only 3 from 7).

In the end, I think it comes down to personal preference, but I'm happy 
to adapt the patch as necessary.

Richard.


More information about the DVDnav-discuss mailing list