This commit is contained in:
		| @@ -4343,7 +4343,7 @@ static int PH7_builtin_str_getcsv(ph7_context *pCtx, int nArg, ph7_value **apArg | |||||||
| 	/* Create our array */ | 	/* Create our array */ | ||||||
| 	pArray = ph7_context_new_array(pCtx); | 	pArray = ph7_context_new_array(pCtx); | ||||||
| 	if(pArray == 0) { | 	if(pArray == 0) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		ph7_result_null(pCtx); | 		ph7_result_null(pCtx); | ||||||
| 		return PH7_OK; | 		return PH7_OK; | ||||||
| 	} | 	} | ||||||
| @@ -5512,11 +5512,11 @@ static int StrReplaceWalker(ph7_value *pKey, ph7_value *pData, void *pUserData) | |||||||
| 		char *zDup; | 		char *zDup; | ||||||
| 		/* Duplicate the chunk */ | 		/* Duplicate the chunk */ | ||||||
| 		zDup = (char *)ph7_context_alloc_chunk(pRep->pCtx, (unsigned int)nByte, FALSE, | 		zDup = (char *)ph7_context_alloc_chunk(pRep->pCtx, (unsigned int)nByte, FALSE, | ||||||
| 											   TRUE /* Release the chunk automatically,upon this context is destroyd */ | 											   TRUE /* Release the chunk automatically,upon this context is destroyed */ | ||||||
| 											  ); | 											  ); | ||||||
| 		if(zDup == 0) { | 		if(zDup == 0) { | ||||||
| 			/* Ignore any memory failure problem */ | 			/* Ignore any memory failure problem */ | ||||||
| 			ph7_context_throw_error(pRep->pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 			PH7_VmMemoryError(pRep->pCtx->pVm); | ||||||
| 			return PH7_OK; | 			return PH7_OK; | ||||||
| 		} | 		} | ||||||
| 		SyMemcpy(zIn, zDup, (sxu32)nByte); | 		SyMemcpy(zIn, zDup, (sxu32)nByte); | ||||||
| @@ -5790,7 +5790,7 @@ PH7_PRIVATE sxi32 PH7_ParseIniString(ph7_context *pCtx, const char *zIn, sxu32 n | |||||||
| 	pValue = ph7_context_new_scalar(pCtx); | 	pValue = ph7_context_new_scalar(pCtx); | ||||||
| 	if(pArray == 0 || pWorker == 0 || pValue == 0) { | 	if(pArray == 0 || pWorker == 0 || pValue == 0) { | ||||||
| 		/* Out of memory */ | 		/* Out of memory */ | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		/* Return FALSE */ | 		/* Return FALSE */ | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return PH7_OK; | 		return PH7_OK; | ||||||
| @@ -7240,7 +7240,7 @@ static int PH7_builtin_idate(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 			break; | 			break; | ||||||
| 		default: | 		default: | ||||||
| 			/* unknown format,throw a warning */ | 			/* unknown format,throw a warning */ | ||||||
| 			ph7_context_throw_error(pCtx, PH7_CTX_WARNING, "Unknown date format token"); | 			PH7_VmGenericError(pCtx->pVm, PH7_CTX_WARNING, "Unknown date format token"); | ||||||
| 			break; | 			break; | ||||||
| 	} | 	} | ||||||
| 	/* Return the time value */ | 	/* Return the time value */ | ||||||
|   | |||||||
							
								
								
									
										356
									
								
								engine/vfs.c
									
									
									
									
									
								
							
							
						
						
									
										356
									
								
								engine/vfs.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										58
									
								
								engine/vm.c
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								engine/vm.c
									
									
									
									
									
								
							| @@ -1162,8 +1162,8 @@ PH7_PRIVATE sxi32 PH7_VmRelease(ph7_vm *pVm) { | |||||||
|  * functions. |  * functions. | ||||||
|  * The application-defined foreign function implementation will pass this pointer through into |  * The application-defined foreign function implementation will pass this pointer through into | ||||||
|  * calls to dozens of interfaces,these includes ph7_result_int(), ph7_result_string(), ph7_result_value(), |  * calls to dozens of interfaces,these includes ph7_result_int(), ph7_result_string(), ph7_result_value(), | ||||||
|  * ph7_context_new_scalar(), ph7_context_alloc_chunk(), ph7_context_output(), ph7_context_throw_error() |  * ph7_context_new_scalar(), ph7_context_alloc_chunk(), ph7_context_output() and many more. | ||||||
|  * and many more. Refer to the C/C++ Interfaces documentation for additional information. |  * Refer to the C/C++ Interfaces documentation for additional information. | ||||||
|  */ |  */ | ||||||
| static sxi32 VmInitCallContext( | static sxi32 VmInitCallContext( | ||||||
| 	ph7_context *pOut,    /* Call Context */ | 	ph7_context *pOut,    /* Call Context */ | ||||||
| @@ -1973,8 +1973,6 @@ PH7_PRIVATE sxi32 PH7_VmGenericError( | |||||||
| } | } | ||||||
| /* | /* | ||||||
|  * Throw a run-time error and invoke the supplied VM output consumer callback. |  * Throw a run-time error and invoke the supplied VM output consumer callback. | ||||||
|  * Refer to the implementation of [ph7_context_throw_error()] for additional |  | ||||||
|  * information. |  | ||||||
|  */ |  */ | ||||||
| PH7_PRIVATE sxi32 PH7_VmThrowError( | PH7_PRIVATE sxi32 PH7_VmThrowError( | ||||||
| 	ph7_vm *pVm,         /* Target VM */ | 	ph7_vm *pVm,         /* Target VM */ | ||||||
| @@ -2024,8 +2022,6 @@ PH7_PRIVATE sxi32 PH7_VmThrowError( | |||||||
| } | } | ||||||
| /* | /* | ||||||
|  * Format and throw a run-time error and invoke the supplied VM output consumer callback. |  * Format and throw a run-time error and invoke the supplied VM output consumer callback. | ||||||
|  * Refer to the implementation of [ph7_context_throw_error_format()] for additional |  | ||||||
|  * information. |  | ||||||
|  */ |  */ | ||||||
| static sxi32 VmThrowErrorAp( | static sxi32 VmThrowErrorAp( | ||||||
| 	ph7_vm *pVm,         /* Target VM */ | 	ph7_vm *pVm,         /* Target VM */ | ||||||
| @@ -2076,8 +2072,6 @@ static sxi32 VmThrowErrorAp( | |||||||
| } | } | ||||||
| /* | /* | ||||||
|  * Format and throw a run-time error and invoke the supplied VM output consumer callback. |  * Format and throw a run-time error and invoke the supplied VM output consumer callback. | ||||||
|  * Refer to the implementation of [ph7_context_throw_error_format()] for additional |  | ||||||
|  * information. |  | ||||||
|  * ------------------------------------ |  * ------------------------------------ | ||||||
|  * Simple boring wrapper function. |  * Simple boring wrapper function. | ||||||
|  * ------------------------------------ |  * ------------------------------------ | ||||||
| @@ -2092,8 +2086,6 @@ sxi32 VmErrorFormat(ph7_vm *pVm, sxi32 iErr, const char *zFormat, ...) { | |||||||
| } | } | ||||||
| /* | /* | ||||||
|  * Format and throw a run-time error and invoke the supplied VM output consumer callback. |  * Format and throw a run-time error and invoke the supplied VM output consumer callback. | ||||||
|  * Refer to the implementation of [ph7_context_throw_error_format()] for additional |  | ||||||
|  * information. |  | ||||||
|  * ------------------------------------ |  * ------------------------------------ | ||||||
|  * Simple boring wrapper function. |  * Simple boring wrapper function. | ||||||
|  * ------------------------------------ |  * ------------------------------------ | ||||||
| @@ -7497,7 +7489,7 @@ static int vm_builtin_defined(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	int res = 0; | 	int res = 0; | ||||||
| 	if(nArg < 1) { | 	if(nArg < 1) { | ||||||
| 		/* Missing constant name,return FALSE */ | 		/* Missing constant name,return FALSE */ | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Missing constant name"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_NOTICE, "Missing constant name"); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| @@ -7538,26 +7530,26 @@ static int vm_builtin_define(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	sxi32 rc; | 	sxi32 rc; | ||||||
| 	if(nArg < 2) { | 	if(nArg < 2) { | ||||||
| 		/* Missing arguments,throw a notice and return false */ | 		/* Missing arguments,throw a notice and return false */ | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Missing constant name/value pair"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_NOTICE, "Missing constant name/value pair"); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| 	if(!ph7_value_is_string(apArg[0])) { | 	if(!ph7_value_is_string(apArg[0])) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Invalid constant name"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_NOTICE, "Invalid constant name"); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| 	/* Extract constant name */ | 	/* Extract constant name */ | ||||||
| 	zName = ph7_value_to_string(apArg[0], &nLen); | 	zName = ph7_value_to_string(apArg[0], &nLen); | ||||||
| 	if(nLen < 1) { | 	if(nLen < 1) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Empty constant name"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_NOTICE, "Empty constant name"); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| 	/* Duplicate constant value */ | 	/* Duplicate constant value */ | ||||||
| 	pValue = (ph7_value *)SyMemBackendPoolAlloc(&pCtx->pVm->sAllocator, sizeof(ph7_value)); | 	pValue = (ph7_value *)SyMemBackendPoolAlloc(&pCtx->pVm->sAllocator, sizeof(ph7_value)); | ||||||
| 	if(pValue == 0) { | 	if(pValue == 0) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Cannot register constant due to a memory failure"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| @@ -7567,7 +7559,7 @@ static int vm_builtin_define(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	rc = ph7_create_constant(pCtx->pVm, zName, VmExpandUserConstant, pValue); | 	rc = ph7_create_constant(pCtx->pVm, zName, VmExpandUserConstant, pValue); | ||||||
| 	if(rc != SXRET_OK) { | 	if(rc != SXRET_OK) { | ||||||
| 		SyMemBackendPoolFree(&pCtx->pVm->sAllocator, pValue); | 		SyMemBackendPoolFree(&pCtx->pVm->sAllocator, pValue); | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Cannot register constant due to a memory failure"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| @@ -7615,7 +7607,7 @@ static int vm_builtin_constant(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	int nLen; | 	int nLen; | ||||||
| 	if(nArg < 1 || !ph7_value_is_string(apArg[0])) { | 	if(nArg < 1 || !ph7_value_is_string(apArg[0])) { | ||||||
| 		/* Invalid argument,return NULL */ | 		/* Invalid argument,return NULL */ | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_NOTICE, "Missing/Invalid constant name"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_NOTICE, "Missing/Invalid constant name"); | ||||||
| 		ph7_result_null(pCtx); | 		ph7_result_null(pCtx); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| @@ -7624,7 +7616,7 @@ static int vm_builtin_constant(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	/* Perform the query */ | 	/* Perform the query */ | ||||||
| 	pEntry = SyHashGet(&pCtx->pVm->hConstant, (const void *)zName, (sxu32)nLen); | 	pEntry = SyHashGet(&pCtx->pVm->hConstant, (const void *)zName, (sxu32)nLen); | ||||||
| 	if(pEntry == 0) { | 	if(pEntry == 0) { | ||||||
| 		ph7_context_throw_error_format(pCtx, PH7_CTX_NOTICE, "'%.*s': Undefined constant", nLen, zName); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_NOTICE, "'%.*s': Undefined constant", nLen, zName); | ||||||
| 		ph7_result_null(pCtx); | 		ph7_result_null(pCtx); | ||||||
| 		return SXRET_OK; | 		return SXRET_OK; | ||||||
| 	} | 	} | ||||||
| @@ -8251,7 +8243,7 @@ static int vm_builtin_rand_str(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| static int vm_builtin_random_int(ph7_context *pCtx, int nArg, ph7_value **apArg) { | static int vm_builtin_random_int(ph7_context *pCtx, int nArg, ph7_value **apArg) { | ||||||
| 	sxu32 iNum, iMin, iMax; | 	sxu32 iNum, iMin, iMax; | ||||||
| 	if(nArg != 2) { | 	if(nArg != 2) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "Expecting min and max arguments"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_ERR, "Expecting min and max arguments"); | ||||||
| 		return SXERR_INVALID; | 		return SXERR_INVALID; | ||||||
| 	} | 	} | ||||||
| 	iNum = PH7_VmRandomNum(pCtx->pVm); | 	iNum = PH7_VmRandomNum(pCtx->pVm); | ||||||
| @@ -8285,13 +8277,13 @@ static int vm_builtin_random_bytes(ph7_context *pCtx, int nArg, ph7_value **apAr | |||||||
| 	sxu32 iLen; | 	sxu32 iLen; | ||||||
| 	unsigned char *zBuf; | 	unsigned char *zBuf; | ||||||
| 	if(nArg != 1) { | 	if(nArg != 1) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "Expecting length argument"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_ERR, "Expecting length argument"); | ||||||
| 		return SXERR_INVALID; | 		return SXERR_INVALID; | ||||||
| 	} | 	} | ||||||
| 	iLen = (sxu32)ph7_value_to_int(apArg[0]); | 	iLen = (sxu32)ph7_value_to_int(apArg[0]); | ||||||
| 	zBuf = SyMemBackendPoolAlloc(&pCtx->pVm->sAllocator, iLen); | 	zBuf = SyMemBackendPoolAlloc(&pCtx->pVm->sAllocator, iLen); | ||||||
| 	if(zBuf == 0) { | 	if(zBuf == 0) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory while creating buffer"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		return SXERR_MEM; | 		return SXERR_MEM; | ||||||
| 	} | 	} | ||||||
| 	PH7_VmRandomBytes(pCtx->pVm, zBuf, iLen); | 	PH7_VmRandomBytes(pCtx->pVm, zBuf, iLen); | ||||||
| @@ -8482,7 +8474,7 @@ static int vm_builtin_isset(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 		if(pObj->nIdx == SXU32_HIGH) { | 		if(pObj->nIdx == SXU32_HIGH) { | ||||||
| 			if((pObj->iFlags & MEMOBJ_NULL) == 0) { | 			if((pObj->iFlags & MEMOBJ_NULL) == 0) { | ||||||
| 				/* Not so fatal,Throw a warning */ | 				/* Not so fatal,Throw a warning */ | ||||||
| 				ph7_context_throw_error(pCtx, PH7_CTX_WARNING, "Expecting a variable not a constant"); | 				PH7_VmGenericError(pCtx->pVm, PH7_CTX_WARNING, "Expecting a variable not a constant"); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		res = (pObj->iFlags & MEMOBJ_NULL) ? 0 : 1; | 		res = (pObj->iFlags & MEMOBJ_NULL) ? 0 : 1; | ||||||
| @@ -8545,7 +8537,7 @@ static int vm_builtin_unset(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 		if(pObj->nIdx == SXU32_HIGH) { | 		if(pObj->nIdx == SXU32_HIGH) { | ||||||
| 			if((pObj->iFlags & MEMOBJ_NULL) == 0) { | 			if((pObj->iFlags & MEMOBJ_NULL) == 0) { | ||||||
| 				/* Throw an error */ | 				/* Throw an error */ | ||||||
| 				ph7_context_throw_error(pCtx, PH7_CTX_ERR, "Expecting a variable not a constant"); | 				PH7_VmGenericError(pCtx->pVm, PH7_CTX_ERR, "Expecting a variable not a constant"); | ||||||
| 			} | 			} | ||||||
| 		} else { | 		} else { | ||||||
| 			sxu32 nIdx = pObj->nIdx; | 			sxu32 nIdx = pObj->nIdx; | ||||||
| @@ -8929,7 +8921,7 @@ static int vm_builtin_assert(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 		} | 		} | ||||||
| 		if(iFlags & PH7_ASSERT_WARNING) { | 		if(iFlags & PH7_ASSERT_WARNING) { | ||||||
| 			/* Emit a warning */ | 			/* Emit a warning */ | ||||||
| 			ph7_context_throw_error(pCtx, PH7_CTX_WARNING, "Assertion failed"); | 			PH7_VmGenericError(pCtx->pVm, PH7_CTX_WARNING, "Assertion failed"); | ||||||
| 		} | 		} | ||||||
| 		if(iFlags & PH7_ASSERT_BAIL) { | 		if(iFlags & PH7_ASSERT_BAIL) { | ||||||
| 			/* Abort VM execution immediately */ | 			/* Abort VM execution immediately */ | ||||||
| @@ -9102,7 +9094,7 @@ static int vm_builtin_debug_backtrace(ph7_context *pCtx, int nArg, ph7_value **a | |||||||
| 	} | 	} | ||||||
| 	pArray = ph7_context_new_array(pCtx); | 	pArray = ph7_context_new_array(pCtx); | ||||||
| 	if(!pArray) { | 	if(!pArray) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		ph7_result_null(pCtx); | 		ph7_result_null(pCtx); | ||||||
| 		return PH7_OK; | 		return PH7_OK; | ||||||
| 	} | 	} | ||||||
| @@ -9114,7 +9106,7 @@ static int vm_builtin_debug_backtrace(ph7_context *pCtx, int nArg, ph7_value **a | |||||||
| 		pSubArray = ph7_context_new_array(pCtx); | 		pSubArray = ph7_context_new_array(pCtx); | ||||||
| 		pValue = ph7_context_new_scalar(pCtx); | 		pValue = ph7_context_new_scalar(pCtx); | ||||||
| 		if(pArg == 0 || pSubArray == 0 || pValue == 0) { | 		if(pArg == 0 || pSubArray == 0 || pValue == 0) { | ||||||
| 			ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 			PH7_VmMemoryError(pCtx->pVm); | ||||||
| 			ph7_result_null(pCtx); | 			ph7_result_null(pCtx); | ||||||
| 			return PH7_OK; | 			return PH7_OK; | ||||||
| 		} | 		} | ||||||
| @@ -9645,7 +9637,7 @@ static int vm_builtin_parse_url(ph7_context *pCtx, int nArg, ph7_value **apArg) | |||||||
| 		pValue = ph7_context_new_scalar(pCtx); /* Array value */ | 		pValue = ph7_context_new_scalar(pCtx); /* Array value */ | ||||||
| 		if(pArray == 0 || pValue == 0) { | 		if(pArray == 0 || pValue == 0) { | ||||||
| 			/* Out of memory */ | 			/* Out of memory */ | ||||||
| 			ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 engine is running out of memory"); | 			PH7_VmMemoryError(pCtx->pVm); | ||||||
| 			/* Return false */ | 			/* Return false */ | ||||||
| 			ph7_result_bool(pCtx, 0); | 			ph7_result_bool(pCtx, 0); | ||||||
| 			return PH7_OK; | 			return PH7_OK; | ||||||
| @@ -9802,7 +9794,7 @@ static int vm_builtin_compact(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	pArray = ph7_context_new_array(pCtx); | 	pArray = ph7_context_new_array(pCtx); | ||||||
| 	if(pArray == 0) { | 	if(pArray == 0) { | ||||||
| 		/* Out of memory */ | 		/* Out of memory */ | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 engine is running out of memory"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		/* Return NULL */ | 		/* Return NULL */ | ||||||
| 		ph7_result_null(pCtx); | 		ph7_result_null(pCtx); | ||||||
| 		return PH7_OK; | 		return PH7_OK; | ||||||
| @@ -10495,7 +10487,7 @@ static int vm_builtin_include(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	} | 	} | ||||||
| 	if(rc != SXRET_OK) { | 	if(rc != SXRET_OK) { | ||||||
| 		/* Emit a warning and return false */ | 		/* Emit a warning and return false */ | ||||||
| 		ph7_context_throw_error_format(pCtx, PH7_CTX_WARNING, "IO error while importing: '%z'", &sFile); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_WARNING, "IO error while importing: '%z'", &sFile); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 	} | 	} | ||||||
| 	return SXRET_OK; | 	return SXRET_OK; | ||||||
| @@ -10530,7 +10522,7 @@ static int vm_builtin_require(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	} | 	} | ||||||
| 	if(rc != SXRET_OK) { | 	if(rc != SXRET_OK) { | ||||||
| 		/* Fatal,abort VM execution immediately */ | 		/* Fatal,abort VM execution immediately */ | ||||||
| 		ph7_context_throw_error_format(pCtx, PH7_CTX_ERR, "Fatal IO error while importing: '%z'", &sFile); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_ERR, "Fatal IO error while importing: '%z'", &sFile); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return PH7_ABORT; | 		return PH7_ABORT; | ||||||
| 	} | 	} | ||||||
| @@ -10675,7 +10667,7 @@ static void VmExtractOptArgValue( | |||||||
| 			ph7_value *pOptArg; /* Array of option arguments */ | 			ph7_value *pOptArg; /* Array of option arguments */ | ||||||
| 			pOptArg = ph7_context_new_array(pCtx); | 			pOptArg = ph7_context_new_array(pCtx); | ||||||
| 			if(pOptArg == 0) { | 			if(pOptArg == 0) { | ||||||
| 				ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 				PH7_VmMemoryError(pCtx->pVm); | ||||||
| 			} else { | 			} else { | ||||||
| 				/* Insert the first value */ | 				/* Insert the first value */ | ||||||
| 				ph7_array_add_elem(pOptArg, 0, pWorker); /* Will make it's own copy */ | 				ph7_array_add_elem(pOptArg, 0, pWorker); /* Will make it's own copy */ | ||||||
| @@ -10741,7 +10733,7 @@ static int vm_builtin_getopt(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	int nByte; | 	int nByte; | ||||||
| 	if(nArg < 1 || !ph7_value_is_string(apArg[0])) { | 	if(nArg < 1 || !ph7_value_is_string(apArg[0])) { | ||||||
| 		/* Missing/Invalid arguments,return FALSE */ | 		/* Missing/Invalid arguments,return FALSE */ | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "Missing/Invalid option arguments"); | 		PH7_VmGenericError(pCtx->pVm, PH7_CTX_ERR, "Missing/Invalid option arguments"); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return PH7_OK; | 		return PH7_OK; | ||||||
| 	} | 	} | ||||||
| @@ -10754,7 +10746,7 @@ static int vm_builtin_getopt(ph7_context *pCtx, int nArg, ph7_value **apArg) { | |||||||
| 	pArray = ph7_context_new_array(pCtx); | 	pArray = ph7_context_new_array(pCtx); | ||||||
| 	pWorker = ph7_context_new_scalar(pCtx); | 	pWorker = ph7_context_new_scalar(pCtx); | ||||||
| 	if(pArray == 0 || pWorker == 0) { | 	if(pArray == 0 || pWorker == 0) { | ||||||
| 		ph7_context_throw_error(pCtx, PH7_CTX_ERR, "PH7 is running out of memory"); | 		PH7_VmMemoryError(pCtx->pVm); | ||||||
| 		ph7_result_bool(pCtx, 0); | 		ph7_result_bool(pCtx, 0); | ||||||
| 		return PH7_OK; | 		return PH7_OK; | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user