[vlmc-devel] [PATCH] MLTBackend: Error checking on m_mltRepo init
yikei lu
luyikei.qmltu at gmail.com
Thu Jul 21 13:14:55 CEST 2016
Though thanks for the patch :)
2016-07-21 20:13 GMT+09:00 Paweł Goliński <golpaw1 at gmail.com>:
>
>> Wiadomość napisana przez yikei lu <luyikei.qmltu at gmail.com> w dniu 21.07.2016, o godz. 13:09:
>>
>> Hi
>>
>> http://www.cplusplus.com/reference/new/operator%20new/
>>
>> (1) throwing allocation
>> Allocates size bytes of storage, suitably aligned to represent any
>> object of that size, and returns a non-null pointer to the first byte
>> of this block.
>> "On failure, it throws a bad_alloc exception.”
>
> Yup, you’re right, thanks :)
>
> Sorry, I’m more of a C guy, need some refreshing of my C++,
> as I haven’t written in it in a while...
>
>>
>> 2016-07-21 20:08 GMT+09:00 Paweł Goliński <golpaw1 at gmail.com>:
>>>
>>> Wiadomość napisana przez yikei lu <luyikei.qmltu at gmail.com> w dniu
>>> 21.07.2016, o godz. 13:04:
>>>
>>> 2016-07-21 20:01 GMT+09:00 Pawel Golinski <golpaw1 at gmail.com>:
>>>
>>> ---
>>> src/Backend/MLT/MLTBackend.cpp | 23 +++++++++++++++--------
>>> 1 file changed, 15 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/src/Backend/MLT/MLTBackend.cpp b/src/Backend/MLT/MLTBackend.cpp
>>> index 3d39930..44b9ba9 100644
>>> --- a/src/Backend/MLT/MLTBackend.cpp
>>> +++ b/src/Backend/MLT/MLTBackend.cpp
>>> @@ -54,17 +54,24 @@ MLTBackend::MLTBackend()
>>> m_mltRepo = Mlt::Factory::init();
>>> m_profile.setFrameRate( 2997, 100 );
>>>
>>> - for ( int i = 0; i < m_mltRepo->filters()->count(); ++i )
>>> + if ( m_mltRepo )
>>>
>>>
>>> m_mltRepo will never be nullptr.
>>>
>>>
>>> "m_mltRepo = Mlt::Factory::init();”
>>> This line calls a function which returns a pointer allocated using „new”.
>>>
>>> „
>>> Repository *Factory::init( const char *directory )
>>> {
>>> return new Repository( mlt_factory_init( directory ) );
>>> }
>>> „
>>>
>>> So it can.
>>>
>>> {
>>> - auto pro = std::unique_ptr<Mlt::Properties>( m_mltRepo->metadata(
>>> filter_type, m_mltRepo->filters()->get_name( i ) ) );
>>> - auto filterInfo = new MLTFilterInfo;
>>> - filterInfo->setProperties( pro.get() );
>>> - if ( filterInfo->identifier().empty() == true )
>>> + for ( int i = 0; i < m_mltRepo->filters()->count(); ++i )
>>> {
>>> - delete filterInfo;
>>> - continue;
>>> + auto pro = std::unique_ptr<Mlt::Properties>(
>>> m_mltRepo->metadata( filter_type, m_mltRepo->filters()->get_name( i ) ) );
>>> + auto filterInfo = new MLTFilterInfo;
>>> + filterInfo->setProperties( pro.get() );
>>> + if ( filterInfo->identifier().empty() == true )
>>> + {
>>> + delete filterInfo;
>>> + continue;
>>> + }
>>> + m_availableFilters[ filterInfo->identifier() ] = filterInfo;
>>> }
>>> - m_availableFilters[ filterInfo->identifier() ] = filterInfo;
>>> + }
>>> + else
>>> + {
>>> + throw InvalidServiceException();
>>> }
>>> }
>>>
>>> --
>>> 2.7.4 (Apple Git-66)
>>>
>>> _______________________________________________
>>> Vlmc-devel mailing list
>>> Vlmc-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>
>>> _______________________________________________
>>> Vlmc-devel mailing list
>>> Vlmc-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>
>>>
>>>
>>> _______________________________________________
>>> Vlmc-devel mailing list
>>> Vlmc-devel at videolan.org
>>> https://mailman.videolan.org/listinfo/vlmc-devel
>>>
>> _______________________________________________
>> Vlmc-devel mailing list
>> Vlmc-devel at videolan.org
>> https://mailman.videolan.org/listinfo/vlmc-devel
>
> _______________________________________________
> Vlmc-devel mailing list
> Vlmc-devel at videolan.org
> https://mailman.videolan.org/listinfo/vlmc-devel
More information about the Vlmc-devel
mailing list