-// ----------------------------------------------------------------------------
-// $Id$
-// ----------------------------------------------------------------------------
-// Public Domain C Library - http://pdclib.sourceforge.net
-// This code is Public Domain. Use, modify, and redistribute at will.
-// ----------------------------------------------------------------------------
+/* ----------------------------------------------------------------------------
+ * $Id$
+ * ----------------------------------------------------------------------------
+ * Public Domain C Library - http://pdclib.sourceforge.net
+ * This code is Public Domain. Use, modify, and redistribute at will.
+ * --------------------------------------------------------------------------*/
void free( void * ptr ) { /* TODO */ };
+
+/* Thomas "Beyond Infinity" Kreitner's code - unchecked, unoptimized
+{
+ chunk_t * chunk;
+ chunk_t * prev_chunk;
+ chunk = used_mem.start;
+ do
+ {
+ prev_chunk = chunk;
+ chunk = chunk->next;
+ } while ( ( chunk != NULL ) && ( chunk->address != ptr ) );
+ if ( chunk->address == ptr )
+ {
+ if( used_mem.start->next->next == NULL )
+ {
+ /* used_mem list has only one entry */
+ chunk = used_mem.start->next;
+ used_mem.last = used_mem.start;
+ }
+ else if ( chunk == used_mem.last )
+ {
+ /* chunk is the last element of used_mem list */
+ prev_chunk->next = NULL;
+ used_mem.last = prev_chunk;
+ }
+ else
+ {
+ /* chunk is neither only nor last in the used_mem list */
+ prev_chunk->next = prev_chunk->next->next;
+ }
+ chunk->next = NULL;
+ free_mem.last->next = chunk;
+ free_mem.last = chunk;
+ return chunk;
+ }
+ else
+ {
+ return NULL;
+ }
+}