pike.git / lib / master.pike.in

version» Context lines:

pike.git/lib/master.pike.in:1:   // -*- Pike -*-   //   // Master Control Program for Pike.   //   // 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: master.pike.in,v 1.239 2002/12/08 21:38:08 mast Exp $ + // $Id: master.pike.in,v 1.240 2002/12/09 22:19:13 mast Exp $      #pike __REAL_VERSION__      // Some programs destroys character pairs beginning with the currency   // symbol when running in chinese locale.   #if "ยค/" != "\244/"   #error "master.pike.in is corrupted."   #endif      // --- Some configurable parameters
pike.git/lib/master.pike.in:871:       void create(string d, object|void h)    {   #ifdef MODULE_TRACE    werror("%*ndirnode(%O,%O);\n",sizeof(backtrace())-1,d,h);   // werror(describe_backtrace( ({"HERE\n",backtrace()})));   #endif    dirname=d;    handler=h;    fc[dirname]=this_object(); -  if(dirname[sizeof(dirname)-5..]==".pmod") +  if(has_suffix(dirname,".pmod"))    fc[dirname[..sizeof(dirname)-6]]=this_object();    }       class module_checker    {    int `!()    {   #ifdef MODULE_TRACE    werror("%*ndirnode(%O)->module_checker()->`!()\n",sizeof(backtrace()),dirname);   #endif
pike.git/lib/master.pike.in:982:   #endif    if(!zero_type(ret=cache[index]))    {   #ifdef MODULE_TRACE    werror("%*nDirnode(%O) cache[%O] -> %O\n",sizeof(backtrace()),dirname,index, ret);   #endif    if (ret != ZERO_TYPE) return ret;    return UNDEFINED;    }    ret=ind(index); +  +  // We might have gotten placeholder objects in the first pass +  // which must not be cached to the second. +  if(ret == predef::__placeholder_object) return ret; +     cache[index] = zero_type(ret) ? ZERO_TYPE : ret;    return ret;    }       static int _cache_full;    void fill_cache()    {   #ifdef RESOLV_DEBUG    werror(describe_backtrace(({ sprintf("Filling cache in dirnode %O\n",    dirname),
pike.git/lib/master.pike.in:1112:    mixed `[](string index)    {    mixed ret;    if (!zero_type(ret = cache[index])) {    if (ret != ZERO_TYPE) {    return ret;    }    return UNDEFINED;    }    ret = ind(index); +  +  // We might have gotten placeholder objects in the first pass +  // which must not be cached to the second. +  if(ret == predef::__placeholder_object) return ret; +     if (zero_type(ret)) {    cache[index] = ZERO_TYPE;    } else {    cache[index] = ret;    }    return ret;    }    static int _cache_full;    void fill_cache()    {