• Christophe Fergeau's avatar
    Fix Dictionary copy constructor · be225ca1
    Christophe Fergeau authored
    While iterating over all the keys stored in the source Dictionary
    to copy them to create the copied Dictonary, the name of the key
    being copied was only set to a non-NULL value for the first key
    we copy. This was then leading to an assertion when trying to
    create a std::string from a NULL pointer. Simple test-case:
    
    int main()
    {
    	PList::Dictionary a;
    	PList::String b("Hello");
    	PList::String c("Hi!");
    	PList::Dictionary d;
    
    	a.Insert("Key", &b);
    	a.Insert("Another Key", &c);
    	std::cout << a.ToXml() << std::endl;
    
    	d.Insert("dictionary", &a); //CRAAAAAAAAASH!
    	std::cout << d.ToXml() << std::endl;
    	return 0;
    }
    /* Output:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>Key</key>
    	<string>Hello</string>
    	<key>Another Key</key>
    	<string>Hi!</string>
    </dict>
    </plist>
    
    terminate called after throwing an instance of 'std::logic_error'
      what():  basic_string::_S_construct NULL not valid
    */
    Signed-off-by: 's avatarMartin Szulecki <opensuse@sukimashita.com>
    be225ca1
Name
Last commit
Last update
cmake Loading commit data...
include Loading commit data...
plutil Loading commit data...
src Loading commit data...
swig Loading commit data...
test Loading commit data...
AUTHORS Loading commit data...
CMakeLists.txt Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
README Loading commit data...
doxygen.cfg Loading commit data...
libplist++.pc.in Loading commit data...
libplist.pc.in Loading commit data...