<feed xmlns='http://www.w3.org/2005/Atom'>
<title>libplist/src, branch 1.4</title>
<subtitle>Library to handle Apple Property List format files in binary or XML</subtitle>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/'/>
<entry>
<title>Plugging memory leak in write_unicode</title>
<updated>2011-03-16T22:24:00+00:00</updated>
<author>
<name>Christophe Fergeau</name>
</author>
<published>2011-03-16T22:21:27+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=00df38d1b370584ed07e2d1b9179df4d4178b0d3'/>
<id>00df38d1b370584ed07e2d1b9179df4d4178b0d3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make sure install_name_tool on OSX picks up library install path</title>
<updated>2011-02-12T17:48:42+00:00</updated>
<author>
<name>Martin Szulecki</name>
</author>
<published>2011-02-12T17:48:42+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=5e44b6bfc0ba2ee36c594caf1999eaf5d26133ed'/>
<id>5e44b6bfc0ba2ee36c594caf1999eaf5d26133ed</id>
<content type='text'>
This allows dylib to correctly find the library and fixes linking on OSX.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows dylib to correctly find the library and fixes linking on OSX.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix Dictionary copy constructor</title>
<updated>2011-02-12T13:17:47+00:00</updated>
<author>
<name>Christophe Fergeau</name>
</author>
<published>2010-10-03T10:30:21+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=be225ca1b627eb4dfc1c2e718f3f392695baeb22'/>
<id>be225ca1b627eb4dfc1c2e718f3f392695baeb22</id>
<content type='text'>
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", &amp;b);
	a.Insert("Another Key", &amp;c);
	std::cout &lt;&lt; a.ToXml() &lt;&lt; std::endl;

	d.Insert("dictionary", &amp;a); //CRAAAAAAAAASH!
	std::cout &lt;&lt; d.ToXml() &lt;&lt; std::endl;
	return 0;
}
/* Output:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;Key&lt;/key&gt;
	&lt;string&gt;Hello&lt;/string&gt;
	&lt;key&gt;Another Key&lt;/key&gt;
	&lt;string&gt;Hi!&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct NULL not valid
*/

Signed-off-by: Martin Szulecki &lt;opensuse@sukimashita.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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", &amp;b);
	a.Insert("Another Key", &amp;c);
	std::cout &lt;&lt; a.ToXml() &lt;&lt; std::endl;

	d.Insert("dictionary", &amp;a); //CRAAAAAAAAASH!
	std::cout &lt;&lt; d.ToXml() &lt;&lt; std::endl;
	return 0;
}
/* Output:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
	&lt;key&gt;Key&lt;/key&gt;
	&lt;string&gt;Hello&lt;/string&gt;
	&lt;key&gt;Another Key&lt;/key&gt;
	&lt;string&gt;Hi!&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct NULL not valid
*/

Signed-off-by: Martin Szulecki &lt;opensuse@sukimashita.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixes the xml export.</title>
<updated>2010-08-23T06:41:49+00:00</updated>
<author>
<name>Dogbert</name>
</author>
<published>2010-08-23T06:41:49+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=9ed6e05b5578a6eb83c593249153b1b5ac7bc780'/>
<id>9ed6e05b5578a6eb83c593249153b1b5ac7bc780</id>
<content type='text'>
Apple's activation server refuses XML tickets when this patch isn't applied.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Apple's activation server refuses XML tickets when this patch isn't applied.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix unicode binary writing.</title>
<updated>2010-07-29T16:40:41+00:00</updated>
<author>
<name>Jonathan Beck</name>
</author>
<published>2010-07-29T16:40:41+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=bd6ce8830f699f890e20faa4c16e24106ee59506'/>
<id>bd6ce8830f699f890e20faa4c16e24106ee59506</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Endianness, alignment and type-punning fixes for binary plist support</title>
<updated>2010-04-18T13:17:58+00:00</updated>
<author>
<name>Julien BLACHE</name>
</author>
<published>2010-04-18T13:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=33b8a1281f6fdaa9602956ae20e629b58a2e31ae'/>
<id>33b8a1281f6fdaa9602956ae20e629b58a2e31ae</id>
<content type='text'>
 - endianness issues: on big endian machines, writing out only part
   of an integer was broken (get_needed_bytes(x) &lt; sizeof(x))
    -&gt; shift integer before memcpy() on big endian machines

 - alignment issues: unaligned reads when loading binary plist. Leads
   to slow runtime performance (kernel trapping and fixing things up),
   SIGBUS (kernel not helping us out)
    -&gt; introduce get_unaligned() and have the compiler generate the code
       needed for the unaligned access
   (note that there remains unaligned accesses that I haven't been able
    to track down - I've seen 2 of them with test #2)

 - type-punning issues: breaking strict aliasing rules can lead to
   unexpected results as the compiler takes full advantage of the aliasing
   while optimizing
    -&gt; introduce the plist_uint_ptr union instead of casting pointers

Tested on amd64, alpha and hppa.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 - endianness issues: on big endian machines, writing out only part
   of an integer was broken (get_needed_bytes(x) &lt; sizeof(x))
    -&gt; shift integer before memcpy() on big endian machines

 - alignment issues: unaligned reads when loading binary plist. Leads
   to slow runtime performance (kernel trapping and fixing things up),
   SIGBUS (kernel not helping us out)
    -&gt; introduce get_unaligned() and have the compiler generate the code
       needed for the unaligned access
   (note that there remains unaligned accesses that I haven't been able
    to track down - I've seen 2 of them with test #2)

 - type-punning issues: breaking strict aliasing rules can lead to
   unexpected results as the compiler takes full advantage of the aliasing
   while optimizing
    -&gt; introduce the plist_uint_ptr union instead of casting pointers

Tested on amd64, alpha and hppa.
</pre>
</div>
</content>
</entry>
<entry>
<title>plist_to_xml: use POSIX locale to make sure '.' is used for floats</title>
<updated>2010-04-06T16:26:03+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2010-04-05T18:37:15+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=eb618a0c5c7a3893fc18a8f1e5d39854aa25c597'/>
<id>eb618a0c5c7a3893fc18a8f1e5d39854aa25c597</id>
<content type='text'>
In locales like German, a ',' is used as a decimal separator. When the
program calling plist_to_xml uses LC_NUMBER with something different
than a '.', parsing of the resulting XML document fails. This patch
fixes it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In locales like German, a ',' is used as a decimal separator. When the
program calling plist_to_xml uses LC_NUMBER with something different
than a '.', parsing of the resulting XML document fails. This patch
fixes it.
</pre>
</div>
</content>
</entry>
<entry>
<title>plist_to_xml: copy terminating 0-byte given from xmlDocDumpMemory</title>
<updated>2010-04-06T16:25:57+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2010-04-05T18:01:14+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=774ce25067303111b6ada712339b7d47ad0f87af'/>
<id>774ce25067303111b6ada712339b7d47ad0f87af</id>
<content type='text'>
This makes it possible to process the resulting char* directly as
a c-string without further copying.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes it possible to process the resulting char* directly as
a c-string without further copying.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix armel floating point endianess (LP: #541879)</title>
<updated>2010-03-24T16:47:02+00:00</updated>
<author>
<name>Alexander Sack</name>
</author>
<published>2010-03-24T16:47:02+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=e965b325b5adf4624f74b8d3366dddc2da9f81f3'/>
<id>e965b325b5adf4624f74b8d3366dddc2da9f81f3</id>
<content type='text'>
* on armel system floating poing data can have different endianess than
  rest of types; hence we fix arm endianess for defined(__VFP_FP__) to
  be big/native; this also applies for data parsing/writing
* date parsing didnt flip the endianess back for little endian systems
  when reading the values causing test failures; we fix this by ensuring
  float endianess is applied when parsing
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* on armel system floating poing data can have different endianess than
  rest of types; hence we fix arm endianess for defined(__VFP_FP__) to
  be big/native; this also applies for data parsing/writing
* date parsing didnt flip the endianess back for little endian systems
  when reading the values causing test failures; we fix this by ensuring
  float endianess is applied when parsing
</pre>
</div>
</content>
</entry>
<entry>
<title>Copy xml buffer to malloced buffer to prevent free / xmlFree mixing.</title>
<updated>2010-03-03T17:33:49+00:00</updated>
<author>
<name>Jonathan Beck</name>
</author>
<published>2010-03-03T17:33:49+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=9bccdb305845e31bcbc8c693e909cc5561f3dd03'/>
<id>9bccdb305845e31bcbc8c693e909cc5561f3dd03</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
