| Age | Commit message (Collapse) | Author | Files | Lines | 
|---|
|  | [clang-tidy]Found with hicpp-deprecated-headers
Signed-off-by: Rosen Penev <rosenp@gmail.com> | 
|  | [clang-tidy] Found with readability-redundant-member-init
Signed-off-by: Rosen Penev <rosenp@gmail.com> | 
|  | [clang-tidy] Found with google-readability-namespace-comments
Signed-off-by: Rosen Penev <rosenp@gmail.com> | 
|  | ... and const versions of three member functions, each returning const_iterator:
* Plist::Dictionary::Begin()
* PList::Dictionary::End()
* PList::Dictionary::Find() | 
|  | Bug: when creating a new Dictionary object (for example through PList::Node::FromPlist(plist_t node) ), the dictionary_fill function is called from Dictionary() constructor in line 50. It seems that the intended way of calling dictionary_fill() is to pass the _map object by reference, however it is actually passed by value. Thus the changes to the map object made by dictionary_fill() are discarded when the function returns.
Fix: pass _map by reference to keep the changes | 
|  |  | 
|  | references and a const GetValue(). | 
|  |  | 
|  | iterator of NULL | 
|  | 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: Martin Szulecki <opensuse@sukimashita.com> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  |