[poppler] qt5/src

Adam Reichold adam.reichold at t-online.de
Wed Jan 10 19:39:22 UTC 2018


Hello again,

If you mind the smart pointer templates, then what about

auto* const newData = new PageTransitionData(*other.data);
auto* const oldData = data;
data = newData;
delete oldData;

As this is a library which does not know what kind of programs will make
use of it, exception safety is quite important IMHO.

Best regards, Adam.

Am 10.01.2018 um 19:57 schrieb Albert Astals Cid:
> El dimecres, 10 de gener de 2018, a les 8:57:05 CET, Adam Reichold va 
> escriure:
>> Hello,
>>
>> Am 09.01.2018 um 23:41 schrieb Albert Astals Cid:
>>> +PageTransition& PageTransition::operator=(const PageTransition &other)
>>> +{
>>> +  if ( this != &other ) {
>>> +    delete data;
>>> +    data = new PageTransitionData(*other.data);
>>> +  }
>>> +
>>> +  return *this;
>>> +}
>>> +
>>
>> In view of exception safety, I think it would be better to first create
>> the new data and then destroy the old one, i.e.:
>>
>> std::unique_ptr<PageTransitionData> newData{new
>> PageTransitionData(*other.data)};
>> data.swap(newData);
> 
> I'd really much prefer code i can read over safety exception :D
> 
> Cheers,
>   Albert
> 
>>
>> (assuming PageTransition::data becomes a unique_ptr)
>>
>> Regards, Adam.
>> _______________________________________________
>> poppler mailing list
>> poppler at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/poppler
> 
> 
> _______________________________________________
> poppler mailing list
> poppler at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/poppler
> 


More information about the poppler mailing list