This commit is contained in:
+16
-17
@@ -914,7 +914,6 @@ PH7_PRIVATE sxi32 PH7_VmInit(
|
|||||||
SySetAlloc(&pVm->aMemObj, 0xFF);
|
SySetAlloc(&pVm->aMemObj, 0xFF);
|
||||||
/* Virtual machine internal containers */
|
/* Virtual machine internal containers */
|
||||||
SyBlobInit(&pVm->sConsumer, &pVm->sAllocator);
|
SyBlobInit(&pVm->sConsumer, &pVm->sAllocator);
|
||||||
SyBlobInit(&pVm->sWorker, &pVm->sAllocator);
|
|
||||||
SyBlobInit(&pVm->sArgv, &pVm->sAllocator);
|
SyBlobInit(&pVm->sArgv, &pVm->sAllocator);
|
||||||
SySetInit(&pVm->aLitObj, &pVm->sAllocator, sizeof(ph7_value));
|
SySetInit(&pVm->aLitObj, &pVm->sAllocator, sizeof(ph7_value));
|
||||||
SySetAlloc(&pVm->aLitObj, 0xFF);
|
SySetAlloc(&pVm->aLitObj, 0xFF);
|
||||||
@@ -1897,7 +1896,7 @@ PH7_PRIVATE sxi32 PH7_VmThrowError(
|
|||||||
sxi32 iErr, /* Severity level: [i.e: Error,Warning or Notice]*/
|
sxi32 iErr, /* Severity level: [i.e: Error,Warning or Notice]*/
|
||||||
const char *zMessage /* Null terminated error message */
|
const char *zMessage /* Null terminated error message */
|
||||||
) {
|
) {
|
||||||
SyBlob *pWorker = &pVm->sWorker;
|
SyBlob sWorker;
|
||||||
SyString *pFile;
|
SyString *pFile;
|
||||||
const char *zErr;
|
const char *zErr;
|
||||||
sxi32 rc;
|
sxi32 rc;
|
||||||
@@ -1905,8 +1904,8 @@ PH7_PRIVATE sxi32 PH7_VmThrowError(
|
|||||||
/* Don't bother reporting errors */
|
/* Don't bother reporting errors */
|
||||||
return SXRET_OK;
|
return SXRET_OK;
|
||||||
}
|
}
|
||||||
/* Reset the working buffer */
|
/* Initialize the working buffer */
|
||||||
SyBlobReset(pWorker);
|
SyBlobInit(&sWorker, &pVm->sAllocator);
|
||||||
/* Peek the processed file if available */
|
/* Peek the processed file if available */
|
||||||
pFile = (SyString *)SySetPeek(&pVm->aFiles);
|
pFile = (SyString *)SySetPeek(&pVm->aFiles);
|
||||||
switch(iErr) {
|
switch(iErr) {
|
||||||
@@ -1921,15 +1920,15 @@ PH7_PRIVATE sxi32 PH7_VmThrowError(
|
|||||||
zErr = "Error: ";
|
zErr = "Error: ";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SyBlobAppend(pWorker, zErr, SyStrlen(zErr));
|
SyBlobAppend(&sWorker, zErr, SyStrlen(zErr));
|
||||||
SyBlobAppend(pWorker, zMessage, SyStrlen(zMessage));
|
SyBlobAppend(&sWorker, zMessage, SyStrlen(zMessage));
|
||||||
if(pFile) {
|
if(pFile) {
|
||||||
/* Append file name */
|
/* Append file name */
|
||||||
SyBlobAppend(pWorker, " in ", sizeof(" in ") - 1);
|
SyBlobAppend(&sWorker, " in ", sizeof(" in ") - 1);
|
||||||
SyBlobAppend(pWorker, pFile->zString, pFile->nByte);
|
SyBlobAppend(&sWorker, pFile->zString, pFile->nByte);
|
||||||
}
|
}
|
||||||
/* Consume the error message */
|
/* Consume the error message */
|
||||||
rc = VmCallErrorHandler(&(*pVm), pWorker);
|
rc = VmCallErrorHandler(&(*pVm), &sWorker);
|
||||||
if(iErr == PH7_CTX_ERR) {
|
if(iErr == PH7_CTX_ERR) {
|
||||||
/* Error ocurred, release at least VM gracefully and exit */
|
/* Error ocurred, release at least VM gracefully and exit */
|
||||||
PH7_VmRelease(pVm);
|
PH7_VmRelease(pVm);
|
||||||
@@ -1949,7 +1948,7 @@ static sxi32 VmThrowErrorAp(
|
|||||||
const char *zFormat, /* Format message */
|
const char *zFormat, /* Format message */
|
||||||
va_list ap /* Variable list of arguments */
|
va_list ap /* Variable list of arguments */
|
||||||
) {
|
) {
|
||||||
SyBlob *pWorker = &pVm->sWorker;
|
SyBlob sWorker;
|
||||||
SyString *pFile;
|
SyString *pFile;
|
||||||
const char *zErr;
|
const char *zErr;
|
||||||
sxi32 rc;
|
sxi32 rc;
|
||||||
@@ -1957,8 +1956,8 @@ static sxi32 VmThrowErrorAp(
|
|||||||
/* Don't bother reporting errors */
|
/* Don't bother reporting errors */
|
||||||
return SXRET_OK;
|
return SXRET_OK;
|
||||||
}
|
}
|
||||||
/* Reset the working buffer */
|
/* Initialize the working buffer */
|
||||||
SyBlobReset(pWorker);
|
SyBlobInit(&sWorker, &pVm->sAllocator);
|
||||||
/* Peek the processed file if available */
|
/* Peek the processed file if available */
|
||||||
pFile = (SyString *)SySetPeek(&pVm->aFiles);
|
pFile = (SyString *)SySetPeek(&pVm->aFiles);
|
||||||
switch(iErr) {
|
switch(iErr) {
|
||||||
@@ -1973,15 +1972,15 @@ static sxi32 VmThrowErrorAp(
|
|||||||
zErr = "Error: ";
|
zErr = "Error: ";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
SyBlobAppend(pWorker, zErr, SyStrlen(zErr));
|
SyBlobAppend(&sWorker, zErr, SyStrlen(zErr));
|
||||||
SyBlobFormatAp(pWorker, zFormat, ap);
|
SyBlobFormatAp(&sWorker, zFormat, ap);
|
||||||
if(pFile) {
|
if(pFile) {
|
||||||
/* Append file name */
|
/* Append file name */
|
||||||
SyBlobAppend(pWorker, " in ", sizeof(" in ") - 1);
|
SyBlobAppend(&sWorker, " in ", sizeof(" in ") - 1);
|
||||||
SyBlobAppend(pWorker, pFile->zString, pFile->nByte);
|
SyBlobAppend(&sWorker, pFile->zString, pFile->nByte);
|
||||||
}
|
}
|
||||||
/* Consume the error message */
|
/* Consume the error message */
|
||||||
rc = VmCallErrorHandler(&(*pVm), pWorker);
|
rc = VmCallErrorHandler(&(*pVm), &sWorker);
|
||||||
if(iErr == PH7_CTX_ERR) {
|
if(iErr == PH7_CTX_ERR) {
|
||||||
/* Error ocurred, release at least VM gracefully and exit */
|
/* Error ocurred, release at least VM gracefully and exit */
|
||||||
PH7_VmRelease(pVm);
|
PH7_VmRelease(pVm);
|
||||||
|
|||||||
@@ -1217,7 +1217,6 @@ struct ph7_vm {
|
|||||||
SyHash hSuper; /* Superglobals hashtable */
|
SyHash hSuper; /* Superglobals hashtable */
|
||||||
SyHash hDBAL; /* DBAL installed drivers */
|
SyHash hDBAL; /* DBAL installed drivers */
|
||||||
SyBlob sConsumer; /* Default VM consumer [i.e Redirect all VM output to this blob] */
|
SyBlob sConsumer; /* Default VM consumer [i.e Redirect all VM output to this blob] */
|
||||||
SyBlob sWorker; /* General purpose working buffer */
|
|
||||||
SyBlob sArgv; /* $argv[] collector [refer to the [getopt()] implementation for more information] */
|
SyBlob sArgv; /* $argv[] collector [refer to the [getopt()] implementation for more information] */
|
||||||
SySet aModules; /* Set of loaded modules */
|
SySet aModules; /* Set of loaded modules */
|
||||||
SySet aFiles; /* Stack of processed files */
|
SySet aFiles; /* Stack of processed files */
|
||||||
|
|||||||
Reference in New Issue
Block a user