-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/106902/
-----------------------------------------------------------

(Updated Oct. 15, 2012, 10:15 p.m.)


Review request for kdelibs and David Faure.


Changes
-------

Do not new the d in KFileItem::setUDSEntry().


Description
-------

Check the d pointer for validity since it is set to 0 by the defaut KFileItem 
ctor.

Patch based on similar code from QImage.

I'd like to draw your attention to these issues:

1) KFileItem::setUDSEntry()
For a null KFileItem, this should probably create a new d and initialize it. 
Ideally, we'd have a dedicated public function to do that (see 
QImage::create()), but since we can not change the public API (or can we?), I 
put the new in setUDSEntry(). Anyway, this is now the only interface function 
that can init a null KFileItem (before the patch, there had been none). All the 
other set* functions do not new the d, but rather return on d == 0.
2) KFileItem::cmp()
What should this return for a null KFileItem? I return false, but still, it 
feels wrong to me.
3) operator << / operator >>
<< returns "null KFileItem" for d == 0 and >> does nothing, returning the 
original stream unmodified. operator << thus duplicates the public operator 
<<(QDebug&).
4) This also overrides dfaure's patch for KFileItem::metaInfo(). There is a

return d->metaInfo()

at the end of the function, so this can crash as well.

All the classes' objects that are default-constructed and then returned in the 
case of d == 0 can be checked for validity, looked it up in the code.


This addresses bug 299726.
    http://bugs.kde.org/show_bug.cgi?id=299726


Diffs (updated)
-----

  kio/kio/kfileitem.cpp 8ab5a1d 

Diff: http://git.reviewboard.kde.org/r/106902/diff/


Testing
-------

Builds fine.


Thanks,

Ignat Semenov

Reply via email to