]> pd.if.org Git - pdclib/blobdiff - functions/stdlib/atexit.c
Fallback to static array as pre-main malloc() created problems. (_start calls atexit...
[pdclib] / functions / stdlib / atexit.c
index 14363566a8147dba4f6c6c7962a9c62ea26eb61f..0d61e32a818f39c9f6645f279bd6331ab5bfdb4a 100644 (file)
 
 #ifndef REGTEST
 
-extern struct _PDCLIB_exitfunc_t * regstack;
+extern void (*_PDCLIB_regstack[])( void );
+extern size_t _PDCLIB_regptr;
 
 int atexit( void (*func)( void ) )
 {
-    struct _PDCLIB_exitfunc_t * regfunc = (struct _PDCLIB_exitfunc_t *)malloc( sizeof( struct _PDCLIB_exitfunc_t ) );
-    if ( regfunc == NULL )
+    if ( _PDCLIB_regptr == 0 )
     {
         return -1;
     }
     else
     {
-        regfunc->func = func;
-       regfunc->next = regstack;
-       regstack = regfunc;
+        _PDCLIB_regstack[ --_PDCLIB_regptr ] = func;
        return 0;
     }
 }