X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=globals.c;h=5bf4aeabcbdbb42696f12acee8210eba788b2bb1;hb=218659229ea7e7f2d98c1a7697e6218c585dfb37;hp=216139d8d4304d331143d47ab8f80adde0e0effa;hpb=51371543ca1a75ed152020ad0846b5b8cf11c32f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/globals.c b/globals.c index 216139d..5bf4aea 100644 --- a/globals.c +++ b/globals.c @@ -9,11 +9,12 @@ #undef PERLVARA #define PERLVARA(x, n, y) #undef PERLVARI -#define PERLVARI(x, y, z) PL_##x = z; +#define PERLVARI(x, y, z) interp.x = z; #undef PERLVARIC -#define PERLVARIC(x, y, z) PL_##x = z; +#define PERLVARIC(x, y, z) interp.x = z; -CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd, +CPerlObj::CPerlObj(IPerlMem* ipM, IPerlMem* ipMS, IPerlMem* ipMP, + IPerlEnv* ipE, IPerlStdIO* ipStd, IPerlLIO* ipLIO, IPerlDir* ipD, IPerlSock* ipS, IPerlProc* ipP) { @@ -21,9 +22,10 @@ CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd, #include "thrdvar.h" #include "intrpvar.h" -#include "perlvars.h" PL_Mem = ipM; + PL_MemShared = ipMS; + PL_MemParse = ipMP; PL_Env = ipE; PL_StdIO = ipStd; PL_LIO = ipLIO; @@ -35,24 +37,22 @@ CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd, void* CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl) { - if(pvtbl != NULL) + if(pvtbl) return pvtbl->pMalloc(pvtbl, nSize); - +#ifndef __MINGW32__ + /* operator new is supposed to throw std::bad_alloc */ return NULL; +#endif } +#ifndef __BORLANDC__ void -CPerlObj::Init(void) +CPerlObj::operator delete(void *pPerl, IPerlMem *pvtbl) { + if(pvtbl) + pvtbl->pFree(pvtbl, pPerl); } - -int -CPerlObj::fprintf(PerlIO *stream, const char *format, ...) -{ - va_list(arglist); - va_start(arglist, format); - return PerlIO_vprintf(stream, format, arglist); -} +#endif #ifdef WIN32 /* XXX why are these needed? */ bool @@ -69,3 +69,23 @@ CPerlObj::do_aspawn(void *vreally, void **vmark, void **vsp) #endif /* WIN32 */ #endif /* PERL_OBJECT */ + +int +Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...) +{ + dTHX; + va_list(arglist); + va_start(arglist, format); + return PerlIO_vprintf(stream, format, arglist); +} + +int +Perl_printf_nocontext(const char *format, ...) +{ + dTHX; + va_list(arglist); + va_start(arglist, format); + return PerlIO_vprintf(PerlIO_stdout(), format, arglist); +} + +#include "perlapi.h" /* bring in PL_force_link_funcs */