<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/dynstr/dynstr.c, branch v0.1.0-rc2</title>
<subtitle>Dynamic string library in C99.
</subtitle>
<id>https://gitea.privatedns.org/xavi/dynstr/atom?h=v0.1.0-rc2</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/dynstr/atom?h=v0.1.0-rc2'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/'/>
<updated>2023-03-08T00:21:16+00:00</updated>
<entry>
<title>dynstr.c: Fix memory leak if realloc(3) fails</title>
<updated>2023-03-08T00:21:16+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2023-03-08T00:21:16+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=909d716a1e6d0c03b61b2a73ad3c2bd20fa55cf2'/>
<id>urn:sha1:909d716a1e6d0c03b61b2a73ad3c2bd20fa55cf2</id>
<content type='text'>
According to C99 §7.20.3.4:

If memory for the new object cannot be allocated, the old object is not
deallocated and its value is unchanged.

Therefore, a temporary pointer must be used to ensure the original
object can still be deallocated should realloc(3) return a null pointer.
</content>
</entry>
<entry>
<title>dynstr.c: Make zero-initialization portable</title>
<updated>2023-03-08T00:19:21+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2023-03-08T00:19:21+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=8e7557ef7a9a10781c79948afa69294afbdde10a'/>
<id>urn:sha1:8e7557ef7a9a10781c79948afa69294afbdde10a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update copyright notice</title>
<updated>2023-03-08T00:18:47+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2023-03-08T00:18:47+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=0f2bf85be8deb008549e0099cb09bdc95f808c47'/>
<id>urn:sha1:0f2bf85be8deb008549e0099cb09bdc95f808c47</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix lifetime issues with va_list</title>
<updated>2020-10-14T06:27:19+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavier.delcampo@orain.io</email>
</author>
<published>2020-10-14T06:27:19+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=601a8133257c095032a3c43bd4319e2c0f105756'/>
<id>urn:sha1:601a8133257c095032a3c43bd4319e2c0f105756</id>
<content type='text'>
The standard requires both va_start and va_end to be called from the
same function. On the other hand, vsnprintf and vsprintf leave the
va_list on an undefined state according to the standard, so a copy must
be created before a second call to these functions.
</content>
</entry>
<entry>
<title>Add dynstr_vprepend</title>
<updated>2020-10-08T09:24:24+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2020-10-08T06:41:22+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=c862d84d0b6827106a53bc571c81eb523b05c50f'/>
<id>urn:sha1:c862d84d0b6827106a53bc571c81eb523b05c50f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add dynstr_vappend</title>
<updated>2020-10-06T07:20:57+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavier.delcampo@orain.io</email>
</author>
<published>2020-10-06T07:20:57+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=8bd1123857aef03c9aefb0658e3a8a562984a52e'/>
<id>urn:sha1:8bd1123857aef03c9aefb0658e3a8a562984a52e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Call dynstr_init on dynstr_free</title>
<updated>2020-09-03T12:43:02+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavier.delcampo@orain.io</email>
</author>
<published>2020-09-03T12:42:18+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=134ebfa751bf8083e36f0707b32a78cf2ba7ac5f'/>
<id>urn:sha1:134ebfa751bf8083e36f0707b32a78cf2ba7ac5f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>dynstr_prepend(), fixed typo in comment</title>
<updated>2020-08-03T21:47:18+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi.dcr@tutanota.com</email>
</author>
<published>2020-08-03T21:47:18+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=fe3c74983c4ffc00d27e72cd76785f7bf2fefb47'/>
<id>urn:sha1:fe3c74983c4ffc00d27e72cd76785f7bf2fefb47</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Various minor changes</title>
<updated>2020-06-12T08:27:12+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavier.delcampo@orain.io</email>
</author>
<published>2020-06-12T08:27:12+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=2b01e38ca2448364b6470e471ebfedf5793638af'/>
<id>urn:sha1:2b01e38ca2448364b6470e471ebfedf5793638af</id>
<content type='text'>
- Removed trailing ';' from convenience macros.
- Convenience macros did not really need the ## __VA_ARGS__ extension.
Simply grouping all parameters into '...', while decreasing readability,
solves the portability issue.
- Added C99 check to dynstr.c.
</content>
</entry>
<entry>
<title>Avoid free() if no string is present</title>
<updated>2020-03-25T09:48:54+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavier.delcampo@orain.io</email>
</author>
<published>2020-03-25T09:48:54+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/dynstr/commit/?id=357d4f2c0fc52ae7e5967f542161d59d09830e27'/>
<id>urn:sha1:357d4f2c0fc52ae7e5967f542161d59d09830e27</id>
<content type='text'>
</content>
</entry>
</feed>
