<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>rpmio/rpmmalloc.c Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.2.17 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>rpmio/rpmmalloc.c</h1><a href="rpmmalloc_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 00005 <span class="preprocessor">#include "<a class="code" href="system_8h.html">system.h</a>"</span> 00006 <span class="preprocessor">#include "<a class="code" href="debug_8h.html">debug.h</a>"</span> 00007 00008 <span class="preprocessor">#if !defined(EXIT_FAILURE)</span> 00009 <span class="preprocessor"></span><span class="preprocessor">#define EXIT_FAILURE 1</span> 00010 <span class="preprocessor"></span><span class="preprocessor">#endif</span> 00011 <span class="preprocessor"></span> 00012 <span class="comment">/*@-modfilesys@*/</span> <a name="l00013"></a><a class="code" href="rpmmalloc_8c.html#a0">00013</a> <span class="comment">/*@only@*/</span> <span class="keywordtype">void</span> *<a class="code" href="rpmmalloc_8c.html#a0">vmefail</a>(size_t size) 00014 { 00015 fprintf(stderr, <a class="code" href="system_8h.html#a18">_</a>(<span class="stringliteral">"memory alloc (%u bytes) returned NULL.\n"</span>), (<span class="keywordtype">unsigned</span>)size); 00016 exit(<a class="code" href="system_8h.html#a3">EXIT_FAILURE</a>); 00017 <span class="comment">/*@notreached@*/</span> 00018 <span class="keywordflow">return</span> NULL; 00019 } 00020 <span class="comment">/*@=modfilesys@*/</span> 00021 00022 <span class="preprocessor">#if !(HAVE_MCHECK_H && defined(__GNUC__)) && !defined(__LCLINT__)</span> 00023 <span class="preprocessor"></span> <a name="l00024"></a><a class="code" href="rpmmalloc_8c.html#a1">00024</a> <span class="comment">/*@out@*/</span> <span class="comment">/*@only@*/</span> <span class="keywordtype">void</span> * <a class="code" href="rpmmalloc_8c.html#a1">xmalloc</a> (size_t size) 00025 { 00026 <span class="keyword">register</span> <span class="keywordtype">void</span> *value; 00027 <span class="keywordflow">if</span> (size == 0) size++; 00028 value = malloc (size); 00029 <span class="keywordflow">if</span> (value == 0) 00030 value = <a class="code" href="rpmmalloc_8c.html#a0">vmefail</a>(size); 00031 <span class="keywordflow">return</span> value; 00032 } 00033 <a name="l00034"></a><a class="code" href="rpmmalloc_8c.html#a2">00034</a> <span class="comment">/*@only@*/</span> <span class="keywordtype">void</span> * <a class="code" href="rpmmalloc_8c.html#a2">xcalloc</a> (size_t nmemb, size_t size) 00035 { 00036 <span class="keyword">register</span> <span class="keywordtype">void</span> *value; 00037 <span class="keywordflow">if</span> (size == 0) size++; 00038 <span class="keywordflow">if</span> (nmemb == 0) nmemb++; 00039 value = calloc (nmemb, size); 00040 <span class="keywordflow">if</span> (value == 0) 00041 value = <a class="code" href="rpmmalloc_8c.html#a0">vmefail</a>(size); 00042 <span class="keywordflow">return</span> value; 00043 } 00044 <a name="l00045"></a><a class="code" href="rpmmalloc_8c.html#a3">00045</a> <span class="comment">/*@only@*/</span> <span class="keywordtype">void</span> * <a class="code" href="rpmmalloc_8c.html#a3">xrealloc</a> (<span class="comment">/*@only@*/</span> <span class="keywordtype">void</span> *ptr, size_t size) 00046 { 00047 <span class="keyword">register</span> <span class="keywordtype">void</span> *value; 00048 <span class="keywordflow">if</span> (size == 0) size++; 00049 value = realloc (ptr, size); 00050 <span class="keywordflow">if</span> (value == 0) 00051 value = <a class="code" href="rpmmalloc_8c.html#a0">vmefail</a>(size); 00052 <span class="keywordflow">return</span> value; 00053 } 00054 <a name="l00055"></a><a class="code" href="rpmmalloc_8c.html#a4">00055</a> <span class="comment">/*@only@*/</span> <span class="keywordtype">char</span> * <a class="code" href="rpmmalloc_8c.html#a4">xstrdup</a> (<span class="keyword">const</span> <span class="keywordtype">char</span> *str) 00056 { 00057 size_t size = strlen(str) + 1; 00058 <span class="keywordtype">char</span> *newstr = (<span class="keywordtype">char</span> *) malloc (size); 00059 <span class="keywordflow">if</span> (newstr == 0) 00060 newstr = (<span class="keywordtype">char</span> *) <a class="code" href="rpmmalloc_8c.html#a0">vmefail</a>(size); 00061 strcpy (newstr, str); 00062 <span class="keywordflow">return</span> newstr; 00063 } 00064 00065 <span class="preprocessor">#endif </span><span class="comment">/* !(HAVE_MCHECK_H && defined(__GNUC__)) */</span> </pre></div><hr><address style="align: right;"><small>Generated on Thu Sep 12 22:15:02 2002 for rpm by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.17 </small></address> </body> </html>