<feed xmlns='http://www.w3.org/2005/Atom'>
<title>libplist/src/plist.h, branch 2.8.0</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>plist: Make plist copy and free implementations iterative</title>
<updated>2026-02-10T16:45:12+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2026-02-10T16:45:12+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=8c78d89041b713bffcb0b09fee4468304a3a54d5'/>
<id>8c78d89041b713bffcb0b09fee4468304a3a54d5</id>
<content type='text'>
Convert plist_free_node() and plist_copy_node() to iterative
implementations. This avoids unbounded recursion and stack
overflow when handling deeply nested plist data, while
preserving existing semantics and caches.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Convert plist_free_node() and plist_copy_node() to iterative
implementations. This avoids unbounded recursion and stack
overflow when handling deeply nested plist data, while
preserving existing semantics and caches.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prevent deep nesting of plist structures in all input/output formats</title>
<updated>2026-01-17T15:04:00+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2026-01-17T14:18:06+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=e45099fb21b679aa0cdb0db394587bb5ba675b0c'/>
<id>e45099fb21b679aa0cdb0db394587bb5ba675b0c</id>
<content type='text'>
Thanks to @unbengable12 for reporting. Addresses #288, #289, #290, #291, and #292.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Thanks to @unbengable12 for reporting. Addresses #288, #289, #290, #291, and #292.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add circular reference detection to all format writers</title>
<updated>2026-01-14T01:50:40+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2026-01-14T01:50:40+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=5b3ae4c1326e0c85df906ffea49b97b80b13ceae'/>
<id>5b3ae4c1326e0c85df906ffea49b97b80b13ceae</id>
<content type='text'>
Thanks to @LkkkLxy for pointing out the issue.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Thanks to @LkkkLxy for pointing out the issue.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix PLIST_API definitions</title>
<updated>2024-01-29T09:45:41+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2024-01-29T09:45:41+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=3daee6097cfa14c597e5104b02acfe83749001d9'/>
<id>3daee6097cfa14c597e5104b02acfe83749001d9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Windows: Use winsock2.h instead of sys/time.h when using MSVC</title>
<updated>2023-05-13T18:23:19+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2023-05-13T18:23:19+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=ff0010080bbab16ec7b12b7f71e958d1e4f6f94b'/>
<id>ff0010080bbab16ec7b12b7f71e958d1e4f6f94b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move PLIST_API to the headers</title>
<updated>2023-05-13T17:53:26+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2023-05-13T17:53:26+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=91c0aa8fa82d3fb42c64b0e46bfa861cada5e47d'/>
<id>91c0aa8fa82d3fb42c64b0e46bfa861cada5e47d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add new output-only formats and Define constants for the different plist formats</title>
<updated>2023-04-16T14:06:11+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2023-04-16T14:06:11+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=3aa5f6a3a663a5f2694ec6fc8cdf9744b616e15e'/>
<id>3aa5f6a3a663a5f2694ec6fc8cdf9744b616e15e</id>
<content type='text'>
This commit introduces constants for the different plist formats,
and adds 3 new human-readable output-only formats:
- PLIST_FORMAT_PRINT: the default human-readable format
- PLIST_FORMAT_LIMD: "libimobiledevice" format (used in ideviceinfo)
- PLIST_FORMAT_PLUTIL: plutil-style format

Also, a new set of write functions has been added:
- plist_write_to_string
- plist_write_to_stream
- plist_write_to_file

Plus a simple "dump" function:
- plist_print

See documentation for details.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit introduces constants for the different plist formats,
and adds 3 new human-readable output-only formats:
- PLIST_FORMAT_PRINT: the default human-readable format
- PLIST_FORMAT_LIMD: "libimobiledevice" format (used in ideviceinfo)
- PLIST_FORMAT_PLUTIL: plutil-style format

Also, a new set of write functions has been added:
- plist_write_to_string
- plist_write_to_stream
- plist_write_to_file

Plus a simple "dump" function:
- plist_print

See documentation for details.
</pre>
</div>
</content>
</entry>
<entry>
<title>[clang-tidy] Remove pointless const</title>
<updated>2021-06-21T23:10:49+00:00</updated>
<author>
<name>Rosen Penev</name>
</author>
<published>2020-12-22T03:52:28+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=0efe610c1d0bfd6bded30bacd47809544db84882'/>
<id>0efe610c1d0bfd6bded30bacd47809544db84882</id>
<content type='text'>
The const is actually misplaced. const plist_t evaluates to void *const
instead of const void *. const qualification of the former makes no
sense in function declarations.

Found with misc-misplaced-const

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The const is actually misplaced. const plist_t evaluates to void *const
instead of const void *. const qualification of the former makes no
sense in function declarations.

Found with misc-misplaced-const

Signed-off-by: Rosen Penev &lt;rosenp@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve plist_dict_set_item performance for large dictionaries with hash table</title>
<updated>2016-11-18T02:22:25+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2016-11-18T02:22:25+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=582c59bf7dcf37270c2fd7e99b4982ebc9bcbc74'/>
<id>582c59bf7dcf37270c2fd7e99b4982ebc9bcbc74</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Change internal storage of PLIST_DATE values from struct timeval to double</title>
<updated>2016-09-18T23:49:05+00:00</updated>
<author>
<name>Nikias Bassen</name>
</author>
<published>2016-09-18T23:49:05+00:00</published>
<link rel='alternate' type='text/html' href='https://cgit.libimobiledevice.org/libplist.git/commit/?id=912cb45928f03355ca162a2f1286ca49eb58155c'/>
<id>912cb45928f03355ca162a2f1286ca49eb58155c</id>
<content type='text'>
This removes the timeval union member from the plist_data_t structure.
Since struct timeval is 2x64bit on 64bit platforms this member unnecessarily
grew the union size to 16 bytes while a size of 8 bytes is sufficient.
Also, on 32bit platforms struct timeval is only 2x32bit of size, limiting the
range of possible time values. In addition the binary property list format
also stores PLIST_DATE nodes as double.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This removes the timeval union member from the plist_data_t structure.
Since struct timeval is 2x64bit on 64bit platforms this member unnecessarily
grew the union size to 16 bytes while a size of 8 bytes is sufficient.
Also, on 32bit platforms struct timeval is only 2x32bit of size, limiting the
range of possible time values. In addition the binary property list format
also stores PLIST_DATE nodes as double.
</pre>
</div>
</content>
</entry>
</feed>
