<html>

<head>
<title>libogg - function - oggpack_writecheck</title>
<link rel=stylesheet href="style.css" type="text/css">
</head>

<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
<table border=0 width=100%>
<tr>
<td><p class=tiny>libogg documentation</p></td>
<td align=right><p class=tiny>libogg release 1.3.3 - 20171107</p></td>
</tr>
</table>

<h1>oggpack_writecheck</h1>

<p><i>declared in "ogg/ogg.h";</i></p>

<p>This function checks the readiness status of
an <a href="oggpack_buffer.html">oggpack_buffer</a> previously
initialized for writing using the
Ogg <a href="bitpacking.html">bitpacking</a> functions.  A write
buffer that encounters an error (such as a failed malloc) will clear
its internal state and release any in-use memory, flagging itself as
'not ready'.  Subsequent attempts to write using the buffer will
silently fail. This error state may be detected at any later time by
using oggpack_writecheck().  It is safe but not necessary to
call <a href="oggpack_writeclear.html">oggpack_writeclear()</a> on a buffer that
has flagged an error and released its resources. 

<p><em>Important note to developers: Although libogg checks the
results of memory allocations, these checks are only useful on a
narrow range of embedded platforms. Allocation checks perform no
useful service on a general purpose desktop OS where pages are
routinely overallocated and all allocations succeed whether memory is
available or not.  The only way to detect an out of memory condition
on the vast majority of OSes is to watch for and capture segmentation
faults.  This function is useful only to embedded developers.</em>
 
<br><br>
<table border=0 color=black cellspacing=0 cellpadding=7>
<tr bgcolor=#cccccc>
	<td>
<pre><b>
int  oggpack_writecheck(<a href="oggpack_buffer.html">oggpack_buffer</a> *b);
</b></pre>
	</td>
</tr>
</table>

<h3>Parameters</h3>
<dl>
<dt><i>b</i></dt>
<dd>An <a href="oggpack_buffer.html">oggpack_buffer</a> previously initialized for writing.</dd>
</dl>


<h3>Return Values</h3>
<blockquote>
<li><i>zero</i>: buffer is ready for writing</li>
<li><i>nonzero</i>: buffer is not ready or encountered an error</li>
</blockquote>
<p>

<br><br>
<hr noshade>
<table border=0 width=100%>
<tr valign=top>
<td><p class=tiny>copyright &copy; 2000-2017 Xiph.Org Foundation</p></td>
<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/">Ogg Container Format</a></p></td>
</tr><tr>
<td><p class=tiny>libogg documentation</p></td>
<td align=right><p class=tiny>libogg release 1.3.3 - 20171107</p></td>
</tr>
</table>


</body>

</html>
