Minor improvements.
[mediadatabase.git] / libdb / memory.c
blob3225228f20dd9b8a424d7e6a710638011ba40020
1 /* -*- Mode: C ; c-basic-offset: 2 -*- */
2 /*****************************************************************************
4 * $Id: memory.c,v 1.3 2004/05/16 19:10:54 nedko Exp $
6 * DESCRIPTION:
7 * Memory helper implementations.
9 * AUTHOR:
10 * Nedko Arnaudov <nedko@users.sourceforge.net>
12 * LICENSE:
13 * GNU GENERAL PUBLIC LICENSE version 2
15 *****************************************************************************/
17 #include <stdlib.h>
18 #include <string.h>
20 #include "../result.h"
21 #include "libdb.h"
22 #include "memory.h"
24 #define BUFFER_INITIAL_ADD 4096
25 #define BUFFER_ADD 4096
27 mediadb_result
28 maybe_enlarge_buffer(
29 char ** ppBuffer,
30 size_t *pnBufferSize,
31 size_t nSizeRequired)
33 char *pNewBuffer;
34 size_t nNewBufferSize;
36 if (nSizeRequired <= *pnBufferSize)
37 return MEDIADB_OK;
39 if (*pnBufferSize == 0 || *ppBuffer == NULL)
41 /* Allocate */
43 nNewBufferSize = nSizeRequired + BUFFER_INITIAL_ADD;
45 pNewBuffer = (char *)malloc(nNewBufferSize);
46 if (pNewBuffer == NULL)
48 //"Cannot allocate %u bytes of memory.",
49 //(unsigned int)nNewBufferSize
50 return MEDIADB_MEM;
53 else
55 /* Reallocate */
57 nNewBufferSize = nSizeRequired + BUFFER_ADD;
59 pNewBuffer = (char *)malloc(nNewBufferSize);
60 if (pNewBuffer == NULL)
62 // "Cannot allocate %u bytes of memory.",
63 //(unsigned int)nNewBufferSize
64 return MEDIADB_MEM;
67 memcpy(pNewBuffer, *ppBuffer, *pnBufferSize);
69 free(*ppBuffer);
73 *pnBufferSize = nNewBufferSize;
74 *ppBuffer = pNewBuffer;
76 return MEDIADB_OK;
79 /*****************************************************************************
81 * Modifications log:
83 * !!! WARNING !!! Following lines are automatically updated by the CVS system.
85 * $Log: memory.c,v $
86 * Revision 1.3 2004/05/16 19:10:54 nedko
87 * Write header information.
89 * Revision 1.2 2004/05/16 18:58:50 nedko
90 * mediadb_result has became more general, it is not specific to libdb
92 * Revision 1.1 2004/05/02 20:12:11 nedko
93 * Improve error dumps.
95 *****************************************************************************/