pike.git / src / module.c

version» Context lines:

pike.git/src/module.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: module.c,v 1.41 2007/04/25 21:58:33 mast Exp $ + || $Id: module.c,v 1.42 2007/05/13 15:00:25 mast Exp $   */      #include "global.h"   #include "module.h"   #include "pike_macros.h"   #include "pike_error.h"   #include "builtin_functions.h"   #include "main.h"   #include "svalue.h"   #include "interpret.h"
pike.git/src/module.c:353: Inside #if defined(DO_PIKE_CLEANUP)
   count = do_gc (NULL, 1);    while (count) {    size_t new_count = do_gc (NULL, 1);    if (new_count >= count) {    fprintf (stderr, "Some destroy function is creating new objects "    "during final cleanup - can't exit cleanly.\n");    break;    }    count = new_count;    } + #ifdef PIKE_DEBUG +  if (!count) { +  struct object *o; +  for (o = first_object; o; o = o->next) +  if (o->prog && (FIND_LFUN (o->prog, LFUN_DESTROY) != -1 || +  o->prog->event_handler)) +  gc_fatal (o, 0, "Object missed in gc_destruct_everything mode.\n"); +  for (o = objects_to_destruct; o; o = o->next) +  if (o->prog && (FIND_LFUN (o->prog, LFUN_DESTROY) != -1 || +  o->prog->event_handler)) +  gc_fatal (o, 0, "Object missed in gc_destruct_everything mode" +  " (is on objects_to_destruct list).\n"); +  } + #endif    gc_destruct_everything = 0;    exit_cleanup_in_progress = 1; /* Warn about object creation from now on. */    }       /* Unload dynamic modules before static ones. */    exit_dynamic_load();   #endif       for(e=NELEM(module_list)-1;e>=0;e--)    {    if(SETJMP(recovery))    call_handle_error();    else {    TRACE((stderr, "Exiting static module #%d: \"%s\"...\n",    e, module_list[e].name));    module_list[e].exit();    }    UNSETJMP(recovery);    }   }