mirror of
https://github.com/php/php-src.git
synced 2026-04-18 21:41:22 +02:00
Merge branch 'phpng' of git.php.net:php-src into phpng
This commit is contained in:
@@ -68,18 +68,8 @@ static void zend_resource_dtor(zend_resource *res TSRMLS_DC)
|
||||
|
||||
ld = zend_hash_index_find_ptr(&list_destructors, res->type);
|
||||
if (ld) {
|
||||
switch (ld->type) {
|
||||
case ZEND_RESOURCE_LIST_TYPE_STD:
|
||||
if (ld->list_dtor) {
|
||||
(ld->list_dtor)(res->ptr);
|
||||
}
|
||||
break;
|
||||
case ZEND_RESOURCE_LIST_TYPE_EX:
|
||||
if (ld->list_dtor_ex) {
|
||||
ld->list_dtor_ex(res TSRMLS_CC);
|
||||
}
|
||||
break;
|
||||
EMPTY_SWITCH_DEFAULT_CASE()
|
||||
if (ld->list_dtor_ex) {
|
||||
ld->list_dtor_ex(res TSRMLS_CC);
|
||||
}
|
||||
} else {
|
||||
zend_error(E_WARNING,"Unknown list entry type (%d)", res->type);
|
||||
@@ -192,18 +182,8 @@ void plist_entry_destructor(zval *zv)
|
||||
|
||||
ld = zend_hash_index_find_ptr(&list_destructors, res->type);
|
||||
if (ld) {
|
||||
switch (ld->type) {
|
||||
case ZEND_RESOURCE_LIST_TYPE_STD:
|
||||
if (ld->plist_dtor) {
|
||||
(ld->plist_dtor)(res->ptr);
|
||||
}
|
||||
break;
|
||||
case ZEND_RESOURCE_LIST_TYPE_EX:
|
||||
if (ld->plist_dtor_ex) {
|
||||
ld->plist_dtor_ex(res TSRMLS_CC);
|
||||
}
|
||||
break;
|
||||
EMPTY_SWITCH_DEFAULT_CASE()
|
||||
if (ld->plist_dtor_ex) {
|
||||
ld->plist_dtor_ex(res TSRMLS_CC);
|
||||
}
|
||||
} else {
|
||||
zend_error(E_WARNING,"Unknown list entry type (%d)", res->type);
|
||||
@@ -276,41 +256,16 @@ void zend_clean_module_rsrc_dtors(int module_number TSRMLS_DC)
|
||||
}
|
||||
|
||||
|
||||
ZEND_API int zend_register_list_destructors(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, int module_number)
|
||||
{
|
||||
zend_rsrc_list_dtors_entry *lde;
|
||||
zval zv;
|
||||
|
||||
lde = malloc(sizeof(zend_rsrc_list_dtors_entry));
|
||||
lde->list_dtor = ld;
|
||||
lde->plist_dtor = pld;
|
||||
lde->list_dtor_ex = lde->plist_dtor_ex = NULL;
|
||||
lde->module_number = module_number;
|
||||
lde->resource_id = list_destructors.nNextFreeElement;
|
||||
lde->type = ZEND_RESOURCE_LIST_TYPE_STD;
|
||||
lde->type_name = NULL;
|
||||
ZVAL_PTR(&zv, lde);
|
||||
|
||||
if (zend_hash_next_index_insert(&list_destructors, &zv) == NULL) {
|
||||
return FAILURE;
|
||||
}
|
||||
return list_destructors.nNextFreeElement-1;
|
||||
}
|
||||
|
||||
|
||||
ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, const char *type_name, int module_number)
|
||||
{
|
||||
zend_rsrc_list_dtors_entry *lde;
|
||||
zval zv;
|
||||
|
||||
lde = malloc(sizeof(zend_rsrc_list_dtors_entry));
|
||||
lde->list_dtor = NULL;
|
||||
lde->plist_dtor = NULL;
|
||||
lde->list_dtor_ex = ld;
|
||||
lde->plist_dtor_ex = pld;
|
||||
lde->module_number = module_number;
|
||||
lde->resource_id = list_destructors.nNextFreeElement;
|
||||
lde->type = ZEND_RESOURCE_LIST_TYPE_EX;
|
||||
lde->type_name = type_name;
|
||||
ZVAL_PTR(&zv, lde);
|
||||
|
||||
|
||||
@@ -27,18 +27,10 @@
|
||||
|
||||
BEGIN_EXTERN_C()
|
||||
|
||||
#define ZEND_RESOURCE_LIST_TYPE_STD 1
|
||||
#define ZEND_RESOURCE_LIST_TYPE_EX 2
|
||||
|
||||
typedef void (*rsrc_dtor_func_t)(zend_resource *res TSRMLS_DC);
|
||||
#define ZEND_RSRC_DTOR_FUNC(name) void name(zend_resource *res TSRMLS_DC)
|
||||
|
||||
typedef struct _zend_rsrc_list_dtors_entry {
|
||||
/* old style destructors */
|
||||
void (*list_dtor)(zend_resource *);
|
||||
void (*plist_dtor)(zend_resource *);
|
||||
|
||||
/* new style destructors */
|
||||
rsrc_dtor_func_t list_dtor_ex;
|
||||
rsrc_dtor_func_t plist_dtor_ex;
|
||||
|
||||
@@ -46,12 +38,9 @@ typedef struct _zend_rsrc_list_dtors_entry {
|
||||
|
||||
int module_number;
|
||||
int resource_id;
|
||||
unsigned char type;
|
||||
} zend_rsrc_list_dtors_entry;
|
||||
|
||||
|
||||
#define register_list_destructors(ld, pld) zend_register_list_destructors(ld, pld, module_number);
|
||||
ZEND_API int zend_register_list_destructors(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, int module_number);
|
||||
ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, const char *type_name, int module_number);
|
||||
|
||||
void list_entry_destructor(zval *ptr);
|
||||
|
||||
@@ -157,7 +157,7 @@ static void _php_curl_close(zend_resource *rsrc TSRMLS_DC);
|
||||
#define CAAL(s, v) add_assoc_long_ex(return_value, s, sizeof(s) - 1, (long) v);
|
||||
#define CAAD(s, v) add_assoc_double_ex(return_value, s, sizeof(s) - 1, (double) v);
|
||||
#define CAAS(s, v) add_assoc_string_ex(return_value, s, sizeof(s) - 1, (char *) (v ? v : ""));
|
||||
#define CAASTR(s, v) add_assoc_str_ex(return_value, s, sizeof(s) - 1, v? v : "");
|
||||
#define CAASTR(s, v) add_assoc_str_ex(return_value, s, sizeof(s) - 1, v ? v : STR_EMPTY_ALLOC());
|
||||
#define CAAZ(s, v) add_assoc_zval_ex(return_value, s, sizeof(s) -1 , (zval *) v);
|
||||
|
||||
#if defined(PHP_WIN32) || defined(__GNUC__)
|
||||
|
||||
@@ -1694,7 +1694,7 @@ PHPAPI void php_strftime(INTERNAL_FUNCTION_PARAMETERS, int gmt)
|
||||
/* VS2012 strftime() returns number of characters, not bytes.
|
||||
See VC++11 bug id 766205. */
|
||||
if (real_len > 0) {
|
||||
real_len = strlen(buf);
|
||||
real_len = buf->len;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -765,8 +765,12 @@ PHP_LIBXML_API void php_libxml_shutdown(void)
|
||||
|
||||
PHP_LIBXML_API void php_libxml_switch_context(zval *context, zval *oldcontext TSRMLS_DC)
|
||||
{
|
||||
ZVAL_COPY_VALUE(oldcontext, &LIBXML(stream_context));
|
||||
ZVAL_COPY_VALUE(&LIBXML(stream_context), context);
|
||||
if (oldcontext) {
|
||||
ZVAL_COPY_VALUE(oldcontext, &LIBXML(stream_context));
|
||||
}
|
||||
if (context) {
|
||||
ZVAL_COPY_VALUE(&LIBXML(stream_context), context);
|
||||
}
|
||||
}
|
||||
|
||||
static PHP_MINIT_FUNCTION(libxml)
|
||||
|
||||
@@ -1191,8 +1191,8 @@ static void set_zval_property(zval* object, char* name, zval* val TSRMLS_DC)
|
||||
|
||||
old_scope = EG(scope);
|
||||
EG(scope) = Z_OBJCE_P(object);
|
||||
Z_DELREF_P(val);
|
||||
add_property_zval(object, name, val);
|
||||
if (Z_REFCOUNTED_P(val)) Z_DELREF_P(val);
|
||||
EG(scope) = old_scope;
|
||||
}
|
||||
|
||||
@@ -1203,12 +1203,10 @@ static zval* get_zval_property(zval* object, char* name, zval *rv TSRMLS_DC)
|
||||
zval *data;
|
||||
zend_class_entry *old_scope;
|
||||
|
||||
//??? INIT_PZVAL(&member);
|
||||
//??? ZVAL_STRING(&member, name, 0);
|
||||
ZVAL_STRING(&member, name);
|
||||
old_scope = EG(scope);
|
||||
EG(scope) = Z_OBJCE_P(object);
|
||||
data = Z_OBJ_HT_P(object)->read_property(object, &member, BP_VAR_IS, 0, &rv TSRMLS_CC);
|
||||
data = Z_OBJ_HT_P(object)->read_property(object, &member, BP_VAR_IS, -1, &rv TSRMLS_CC);
|
||||
if (data == &EG(uninitialized_zval)) {
|
||||
/* Hack for bug #32455 */
|
||||
zend_property_info *property_info;
|
||||
@@ -1216,10 +1214,13 @@ static zval* get_zval_property(zval* object, char* name, zval *rv TSRMLS_DC)
|
||||
property_info = zend_get_property_info(Z_OBJCE_P(object), &member, 1 TSRMLS_CC);
|
||||
EG(scope) = old_scope;
|
||||
if (property_info && zend_hash_exists(Z_OBJPROP_P(object), property_info->name)) {
|
||||
zval_ptr_dtor(&member);
|
||||
return data;
|
||||
}
|
||||
zval_ptr_dtor(&member);
|
||||
return NULL;
|
||||
}
|
||||
zval_ptr_dtor(&member);
|
||||
EG(scope) = old_scope;
|
||||
return data;
|
||||
} else if (Z_TYPE_P(object) == IS_ARRAY) {
|
||||
|
||||
@@ -380,9 +380,13 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction
|
||||
|
||||
zend_hash_internal_pointer_reset(Z_ARRVAL_P(return_value));
|
||||
tmp = zend_hash_get_current_data(Z_ARRVAL_P(return_value));
|
||||
if (Z_REFCOUNTED_P(tmp)) Z_ADDREF_P(tmp);
|
||||
zval_dtor(return_value);
|
||||
ZVAL_COPY_VALUE(return_value, tmp);
|
||||
if (!Z_REFCOUNTED_P(return_value)) {
|
||||
ZVAL_COPY(return_value, tmp);
|
||||
} else {
|
||||
zend_refcounted *garbage = Z_COUNTED_P(return_value);
|
||||
ZVAL_COPY(return_value, tmp);
|
||||
_zval_dtor_func(garbage ZEND_FILE_LINE_CC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ ZEND_BEGIN_MODULE_GLOBALS(soap)
|
||||
sdlPtr sdl;
|
||||
zend_bool use_soap_error_handler;
|
||||
char* error_code;
|
||||
zval* error_object;
|
||||
zval error_object;
|
||||
char cache;
|
||||
char cache_mode;
|
||||
char cache_enabled;
|
||||
@@ -200,7 +200,7 @@ ZEND_EXTERN_MODULE_GLOBALS(soap)
|
||||
|
||||
extern zend_class_entry* soap_var_class_entry;
|
||||
|
||||
zval* add_soap_fault(zval *obj, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail TSRMLS_DC);
|
||||
void add_soap_fault(zval *obj, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail TSRMLS_DC);
|
||||
|
||||
#define soap_error0(severity, format) \
|
||||
php_error(severity, "SOAP-ERROR: " format)
|
||||
|
||||
106
ext/soap/soap.c
106
ext/soap/soap.c
@@ -51,6 +51,7 @@ static void type_to_string(sdlTypePtr type, smart_str *buf, int level);
|
||||
|
||||
static void clear_soap_fault(zval *obj TSRMLS_DC);
|
||||
static void set_soap_fault(zval *obj, char *fault_code_ns, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail, char *name TSRMLS_DC);
|
||||
static void add_soap_fault_ex(zval *fault, zval *obj, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail TSRMLS_DC);
|
||||
static void soap_server_fault(char* code, char* string, char *actor, zval* details, char *name TSRMLS_DC);
|
||||
static void soap_server_fault_ex(sdlFunctionPtr function, zval* fault, soapHeader* hdr TSRMLS_DC);
|
||||
|
||||
@@ -73,22 +74,22 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
#define SOAP_SERVER_BEGIN_CODE() \
|
||||
zend_bool _old_handler = SOAP_GLOBAL(use_soap_error_handler);\
|
||||
char* _old_error_code = SOAP_GLOBAL(error_code);\
|
||||
zval* _old_error_object = SOAP_GLOBAL(error_object);\
|
||||
zend_object* _old_error_object = Z_OBJ(SOAP_GLOBAL(error_object));\
|
||||
int _old_soap_version = SOAP_GLOBAL(soap_version);\
|
||||
SOAP_GLOBAL(use_soap_error_handler) = 1;\
|
||||
SOAP_GLOBAL(error_code) = "Server";\
|
||||
SOAP_GLOBAL(error_object) = getThis();
|
||||
Z_OBJ(SOAP_GLOBAL(error_object)) = Z_OBJ(EG(This));
|
||||
|
||||
#define SOAP_SERVER_END_CODE() \
|
||||
SOAP_GLOBAL(use_soap_error_handler) = _old_handler;\
|
||||
SOAP_GLOBAL(error_code) = _old_error_code;\
|
||||
SOAP_GLOBAL(error_object) = _old_error_object;\
|
||||
Z_OBJ(SOAP_GLOBAL(error_object)) = _old_error_object;\
|
||||
SOAP_GLOBAL(soap_version) = _old_soap_version;
|
||||
|
||||
#define SOAP_CLIENT_BEGIN_CODE() \
|
||||
zend_bool _old_handler = SOAP_GLOBAL(use_soap_error_handler);\
|
||||
char* _old_error_code = SOAP_GLOBAL(error_code);\
|
||||
zval* _old_error_object = SOAP_GLOBAL(error_object);\
|
||||
zend_object* _old_error_object = Z_OBJ(SOAP_GLOBAL(error_object));\
|
||||
int _old_soap_version = SOAP_GLOBAL(soap_version);\
|
||||
zend_bool _old_in_compilation = CG(in_compilation); \
|
||||
zend_bool _old_in_execution = EG(in_execution); \
|
||||
@@ -97,7 +98,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
int _bailout = 0;\
|
||||
SOAP_GLOBAL(use_soap_error_handler) = 1;\
|
||||
SOAP_GLOBAL(error_code) = "Client";\
|
||||
SOAP_GLOBAL(error_object) = getThis();\
|
||||
Z_OBJ(SOAP_GLOBAL(error_object)) = Z_OBJ(EG(This));\
|
||||
zend_try {
|
||||
|
||||
#define SOAP_CLIENT_END_CODE() \
|
||||
@@ -122,7 +123,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
} zend_end_try();\
|
||||
SOAP_GLOBAL(use_soap_error_handler) = _old_handler;\
|
||||
SOAP_GLOBAL(error_code) = _old_error_code;\
|
||||
SOAP_GLOBAL(error_object) = _old_error_object;\
|
||||
Z_OBJ(SOAP_GLOBAL(error_object)) = _old_error_object;\
|
||||
SOAP_GLOBAL(soap_version) = _old_soap_version;\
|
||||
if (_bailout) {\
|
||||
zend_bailout();\
|
||||
@@ -556,13 +557,12 @@ static void php_soap_prepare_globals()
|
||||
} while (defaultEncoding[i].details.type != END_KNOWN_TYPES);
|
||||
|
||||
/* hash by namespace */
|
||||
//??? change _mem into _ptr
|
||||
zend_hash_str_add_mem(&defEncNs, XSD_1999_NAMESPACE, sizeof(XSD_1999_NAMESPACE)-1, XSD_NS_PREFIX, sizeof(XSD_NS_PREFIX));
|
||||
zend_hash_str_add_mem(&defEncNs, XSD_NAMESPACE, sizeof(XSD_NAMESPACE)-1, XSD_NS_PREFIX, sizeof(XSD_NS_PREFIX));
|
||||
zend_hash_str_add_mem(&defEncNs, XSI_NAMESPACE, sizeof(XSI_NAMESPACE)-1, XSI_NS_PREFIX, sizeof(XSI_NS_PREFIX));
|
||||
zend_hash_str_add_mem(&defEncNs, XML_NAMESPACE, sizeof(XML_NAMESPACE)-1, XML_NS_PREFIX, sizeof(XML_NS_PREFIX));
|
||||
zend_hash_str_add_mem(&defEncNs, SOAP_1_1_ENC_NAMESPACE, sizeof(SOAP_1_1_ENC_NAMESPACE)-1, SOAP_1_1_ENC_NS_PREFIX, sizeof(SOAP_1_1_ENC_NS_PREFIX));
|
||||
zend_hash_str_add_mem(&defEncNs, SOAP_1_2_ENC_NAMESPACE, sizeof(SOAP_1_2_ENC_NAMESPACE)-1, SOAP_1_2_ENC_NS_PREFIX, sizeof(SOAP_1_2_ENC_NS_PREFIX));
|
||||
zend_hash_str_add_ptr(&defEncNs, XSD_1999_NAMESPACE, sizeof(XSD_1999_NAMESPACE)-1, XSD_NS_PREFIX);
|
||||
zend_hash_str_add_ptr(&defEncNs, XSD_NAMESPACE, sizeof(XSD_NAMESPACE)-1, XSD_NS_PREFIX);
|
||||
zend_hash_str_add_ptr(&defEncNs, XSI_NAMESPACE, sizeof(XSI_NAMESPACE)-1, XSI_NS_PREFIX);
|
||||
zend_hash_str_add_ptr(&defEncNs, XML_NAMESPACE, sizeof(XML_NAMESPACE)-1, XML_NS_PREFIX);
|
||||
zend_hash_str_add_ptr(&defEncNs, SOAP_1_1_ENC_NAMESPACE, sizeof(SOAP_1_1_ENC_NAMESPACE)-1, SOAP_1_1_ENC_NS_PREFIX);
|
||||
zend_hash_str_add_ptr(&defEncNs, SOAP_1_2_ENC_NAMESPACE, sizeof(SOAP_1_2_ENC_NAMESPACE)-1, SOAP_1_2_ENC_NS_PREFIX);
|
||||
}
|
||||
|
||||
static void php_soap_init_globals(zend_soap_globals *soap_globals TSRMLS_DC)
|
||||
@@ -573,7 +573,7 @@ static void php_soap_init_globals(zend_soap_globals *soap_globals TSRMLS_DC)
|
||||
soap_globals->typemap = NULL;
|
||||
soap_globals->use_soap_error_handler = 0;
|
||||
soap_globals->error_code = NULL;
|
||||
soap_globals->error_object = NULL;
|
||||
ZVAL_OBJ(&soap_globals->error_object, NULL);
|
||||
soap_globals->sdl = NULL;
|
||||
soap_globals->soap_version = SOAP_1_1;
|
||||
soap_globals->mem_cache = NULL;
|
||||
@@ -599,7 +599,7 @@ PHP_RINIT_FUNCTION(soap)
|
||||
SOAP_GLOBAL(typemap) = NULL;
|
||||
SOAP_GLOBAL(use_soap_error_handler) = 0;
|
||||
SOAP_GLOBAL(error_code) = NULL;
|
||||
SOAP_GLOBAL(error_object) = NULL;
|
||||
ZVAL_OBJ(&SOAP_GLOBAL(error_object), NULL);
|
||||
SOAP_GLOBAL(sdl) = NULL;
|
||||
SOAP_GLOBAL(soap_version) = SOAP_1_1;
|
||||
SOAP_GLOBAL(encoding) = NULL;
|
||||
@@ -609,22 +609,22 @@ PHP_RINIT_FUNCTION(soap)
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static void delete_sdl_res(zend_resource *res)
|
||||
static void delete_sdl_res(zend_resource *res TSRMLS_CC)
|
||||
{
|
||||
delete_sdl(res->ptr);
|
||||
}
|
||||
|
||||
static void delete_url_res(zend_resource *res)
|
||||
static void delete_url_res(zend_resource *res TSRMLS_CC)
|
||||
{
|
||||
delete_url(res->ptr);
|
||||
}
|
||||
|
||||
static void delete_service_res(zend_resource *res)
|
||||
static void delete_service_res(zend_resource *res TSRMLS_CC)
|
||||
{
|
||||
delete_service(res->ptr);
|
||||
}
|
||||
|
||||
static void delete_hashtable_res(zend_resource *res)
|
||||
static void delete_hashtable_res(zend_resource *res TSRMLS_CC)
|
||||
{
|
||||
delete_hashtable(res->ptr);
|
||||
}
|
||||
@@ -677,10 +677,10 @@ PHP_MINIT_FUNCTION(soap)
|
||||
INIT_CLASS_ENTRY(ce, PHP_SOAP_HEADER_CLASSNAME, soap_header_functions);
|
||||
soap_header_class_entry = zend_register_internal_class(&ce TSRMLS_CC);
|
||||
|
||||
le_sdl = register_list_destructors(delete_sdl_res, NULL);
|
||||
le_url = register_list_destructors(delete_url_res, NULL);
|
||||
le_service = register_list_destructors(delete_service_res, NULL);
|
||||
le_typemap = register_list_destructors(delete_hashtable_res, NULL);
|
||||
le_sdl = zend_register_list_destructors_ex(delete_sdl_res, NULL, "SOAP SDL", module_number);
|
||||
le_url = zend_register_list_destructors_ex(delete_url_res, NULL, "SOAP URL", module_number);
|
||||
le_service = zend_register_list_destructors_ex(delete_service_res, NULL, "SOAP service", module_number);
|
||||
le_typemap = zend_register_list_destructors_ex(delete_hashtable_res, NULL, "SOAP table", module_number);
|
||||
|
||||
REGISTER_LONG_CONSTANT("SOAP_1_1", SOAP_1_1, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("SOAP_1_2", SOAP_1_2, CONST_CS | CONST_PERSISTENT);
|
||||
@@ -1311,10 +1311,6 @@ PHP_METHOD(SoapServer, setClass)
|
||||
return;
|
||||
}
|
||||
|
||||
if (argv) {
|
||||
efree(argv);
|
||||
}
|
||||
|
||||
SOAP_SERVER_END_CODE();
|
||||
}
|
||||
/* }}} */
|
||||
@@ -2081,6 +2077,7 @@ static void soap_server_fault_ex(sdlFunctionPtr function, zval* fault, soapHeade
|
||||
use_http_error_status = 0;
|
||||
}
|
||||
}
|
||||
STR_RELEASE(server);
|
||||
/*
|
||||
Want to return HTTP 500 but apache wants to over write
|
||||
our fault code with their own handling... Figure this out later
|
||||
@@ -2137,13 +2134,12 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
return;
|
||||
}
|
||||
|
||||
if (SOAP_GLOBAL(error_object) &&
|
||||
Z_TYPE_P(SOAP_GLOBAL(error_object)) == IS_OBJECT &&
|
||||
instanceof_function(Z_OBJCE_P(SOAP_GLOBAL(error_object)), soap_class_entry TSRMLS_CC)) {
|
||||
if (Z_OBJ(SOAP_GLOBAL(error_object)) &&
|
||||
instanceof_function(Z_OBJCE(SOAP_GLOBAL(error_object)), soap_class_entry TSRMLS_CC)) {
|
||||
zval *tmp;
|
||||
int use_exceptions = 0;
|
||||
|
||||
if ((tmp = zend_hash_str_find(Z_OBJPROP_P(SOAP_GLOBAL(error_object)), "_exceptions", sizeof("_exceptions")-1)) == NULL ||
|
||||
if ((tmp = zend_hash_str_find(Z_OBJPROP(SOAP_GLOBAL(error_object)), "_exceptions", sizeof("_exceptions")-1)) == NULL ||
|
||||
Z_TYPE_P(tmp) != IS_FALSE) {
|
||||
use_exceptions = 1;
|
||||
}
|
||||
@@ -2154,7 +2150,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
error_num == E_ERROR ||
|
||||
error_num == E_PARSE) &&
|
||||
use_exceptions) {
|
||||
zval *fault;
|
||||
zval fault;
|
||||
char* code = SOAP_GLOBAL(error_code);
|
||||
char buffer[1024];
|
||||
int buffer_len;
|
||||
@@ -2182,9 +2178,9 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
if (code == NULL) {
|
||||
code = "Client";
|
||||
}
|
||||
fault = add_soap_fault(SOAP_GLOBAL(error_object), code, buffer, NULL, NULL TSRMLS_CC);
|
||||
Z_ADDREF_P(fault);
|
||||
zend_throw_exception_object(fault TSRMLS_CC);
|
||||
add_soap_fault_ex(&fault, &SOAP_GLOBAL(error_object), code, buffer, NULL, NULL TSRMLS_CC);
|
||||
Z_ADDREF(fault);
|
||||
zend_throw_exception_object(&fault TSRMLS_CC);
|
||||
|
||||
//??? old_objects = EG(objects_store).object_buckets;
|
||||
//??? EG(objects_store).object_buckets = NULL;
|
||||
@@ -2235,10 +2231,9 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
if (code == NULL) {
|
||||
code = "Server";
|
||||
}
|
||||
if (SOAP_GLOBAL(error_object) &&
|
||||
Z_TYPE_P(SOAP_GLOBAL(error_object)) == IS_OBJECT &&
|
||||
instanceof_function(Z_OBJCE_P(SOAP_GLOBAL(error_object)), soap_server_class_entry TSRMLS_CC) &&
|
||||
(tmp = zend_hash_str_find(Z_OBJPROP_P(SOAP_GLOBAL(error_object)), "service", sizeof("service")-1)) != NULL &&
|
||||
if (Z_OBJ(SOAP_GLOBAL(error_object)) &&
|
||||
instanceof_function(Z_OBJCE(SOAP_GLOBAL(error_object)), soap_server_class_entry TSRMLS_CC) &&
|
||||
(tmp = zend_hash_str_find(Z_OBJPROP(SOAP_GLOBAL(error_object)), "service", sizeof("service")-1)) != NULL &&
|
||||
(service = (soapServicePtr)zend_fetch_resource(tmp TSRMLS_CC, -1, "service", NULL, 1, le_service)) &&
|
||||
!service->send_errors) {
|
||||
strcpy(buffer, "Internal Error");
|
||||
@@ -2267,6 +2262,7 @@ static void soap_error_handler(int error_num, const char *error_filename, const
|
||||
php_output_discard(TSRMLS_C);
|
||||
|
||||
}
|
||||
ZVAL_NULL(&fault_obj);
|
||||
set_soap_fault(&fault_obj, NULL, code, buffer, NULL, &outbuf, NULL TSRMLS_CC);
|
||||
fault = 1;
|
||||
}
|
||||
@@ -2782,7 +2778,7 @@ static void do_soap_call(zval* this_ptr,
|
||||
if ((fault = zend_hash_str_find(Z_OBJPROP_P(this_ptr), "__soap_fault", sizeof("__soap_fault")-1)) != NULL) {
|
||||
ZVAL_COPY(return_value, fault);
|
||||
} else {
|
||||
ZVAL_COPY(return_value, add_soap_fault(this_ptr, "Client", "Unknown Error", NULL, NULL TSRMLS_CC));
|
||||
add_soap_fault_ex(return_value, this_ptr, "Client", "Unknown Error", NULL, NULL TSRMLS_CC);
|
||||
}
|
||||
} else {
|
||||
zval* fault;
|
||||
@@ -2850,7 +2846,6 @@ PHP_METHOD(SoapClient, __call)
|
||||
zval *tmp;
|
||||
zend_bool free_soap_headers = 0;
|
||||
zval *this_ptr;
|
||||
//??? HashPosition pos;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sa|a!zz",
|
||||
&function, &function_len, &args, &options, &headers, &output_headers) == FAILURE) {
|
||||
@@ -3213,16 +3208,22 @@ static void clear_soap_fault(zval *obj TSRMLS_DC)
|
||||
}
|
||||
}
|
||||
|
||||
zval* add_soap_fault(zval *obj, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail TSRMLS_DC)
|
||||
static void add_soap_fault_ex(zval *fault, zval *obj, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail TSRMLS_DC)
|
||||
{
|
||||
ZVAL_NULL(fault);
|
||||
set_soap_fault(fault, NULL, fault_code, fault_string, fault_actor, fault_detail, NULL TSRMLS_CC);
|
||||
add_property_zval(obj, "__soap_fault", fault);
|
||||
Z_DELREF_P(fault);
|
||||
}
|
||||
|
||||
void add_soap_fault(zval *obj, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail TSRMLS_DC)
|
||||
{
|
||||
zval fault;
|
||||
|
||||
ZVAL_NULL(&fault);
|
||||
set_soap_fault(&fault, NULL, fault_code, fault_string, fault_actor, fault_detail, NULL TSRMLS_CC);
|
||||
add_property_zval(obj, "__soap_fault", &fault);
|
||||
Z_DELREF(fault);
|
||||
//??? FIXME
|
||||
// return &fault;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void set_soap_fault(zval *obj, char *fault_code_ns, char *fault_code, char *fault_string, char *fault_actor, zval *fault_detail, char *name TSRMLS_DC)
|
||||
@@ -3270,7 +3271,7 @@ static void set_soap_fault(zval *obj, char *fault_code_ns, char *fault_code, cha
|
||||
if (fault_actor != NULL) {
|
||||
add_property_string(obj, "faultactor", fault_actor);
|
||||
}
|
||||
if (fault_detail != NULL) {
|
||||
if (fault_detail != NULL && Z_TYPE_P(fault_detail) != IS_UNDEF) {
|
||||
add_property_zval(obj, "detail", fault_detail);
|
||||
}
|
||||
if (name != NULL) {
|
||||
@@ -3298,7 +3299,7 @@ static void deserialize_parameters(xmlNodePtr params, sdlFunctionPtr function, i
|
||||
}
|
||||
} ZEND_HASH_FOREACH_END();
|
||||
if (use_names) {
|
||||
tmp_parameters = safe_emalloc(num_of_params, sizeof(zval *), 0);
|
||||
tmp_parameters = safe_emalloc(num_of_params, sizeof(zval), 0);
|
||||
ZEND_HASH_FOREACH_PTR(function->requestParameters, param) {
|
||||
val = get_node(params, param->paramName);
|
||||
if (!val) {
|
||||
@@ -3336,7 +3337,7 @@ static void deserialize_parameters(xmlNodePtr params, sdlFunctionPtr function, i
|
||||
strcmp((char *)params->name, function->functionName) == 0) {
|
||||
num_of_params = 0;
|
||||
} else if (num_of_params > 0) {
|
||||
tmp_parameters = safe_emalloc(num_of_params, sizeof(zval *), 0);
|
||||
tmp_parameters = safe_emalloc(num_of_params, sizeof(zval), 0);
|
||||
|
||||
trav = params;
|
||||
while (trav != 0 && cur_param < num_of_params) {
|
||||
@@ -4616,8 +4617,9 @@ static void type_to_string(sdlTypePtr type, smart_str *buf, int level)
|
||||
for (i = 0;i < level;i++) {
|
||||
smart_str_appendc(&spaces, ' ');
|
||||
}
|
||||
smart_str_appendl(buf, spaces.s->val, spaces.s->len);
|
||||
|
||||
if (spaces.s) {
|
||||
smart_str_appendl(buf, spaces.s->val, spaces.s->len);
|
||||
}
|
||||
switch (type->kind) {
|
||||
case XSD_TYPEKIND_SIMPLE:
|
||||
if (type->encode) {
|
||||
@@ -4760,7 +4762,9 @@ static void type_to_string(sdlTypePtr type, smart_str *buf, int level)
|
||||
smart_str_appendl(buf, ";\n", 2);
|
||||
} ZEND_HASH_FOREACH_END();
|
||||
}
|
||||
smart_str_appendl(buf, spaces.s->val, spaces.s->len);
|
||||
if (spaces.s) {
|
||||
smart_str_appendl(buf, spaces.s->val, spaces.s->len);
|
||||
}
|
||||
smart_str_appendc(buf, '}');
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -4019,7 +4019,9 @@ PHP_FUNCTION(getenv)
|
||||
efree(ptr);
|
||||
RETURN_EMPTY_STRING();
|
||||
} else {
|
||||
RETURN_STRING(ptr, 0);
|
||||
RETVAL_STRING(ptr);
|
||||
efree(ptr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -78,7 +78,7 @@ PHP_FUNCTION(readlink)
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "readlink failed to read the symbolic link (%s), error %d)", link, GetLastError());
|
||||
RETURN_FALSE;
|
||||
}
|
||||
RETURN_STRING(target, 1);
|
||||
RETURN_STRING(target);
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ static int php_array_element_dump(zval *zv TSRMLS_DC, int num_args, va_list args
|
||||
php_printf("%*c[\"", level + 1, ' ');
|
||||
PHPWRITE(hash_key->key->val, hash_key->key->len);
|
||||
php_printf("\"]=>\n");
|
||||
}
|
||||
}
|
||||
php_var_dump(zv, level + 2 TSRMLS_CC);
|
||||
return 0;
|
||||
}
|
||||
@@ -722,7 +722,6 @@ static void php_var_serialize_class(smart_str *buf, zval *struc, zval *retval_pt
|
||||
zend_string *key;
|
||||
zval *d, *name;
|
||||
ulong index;
|
||||
int i;
|
||||
zval nval, *nvalp;
|
||||
HashTable *propers, *ht;
|
||||
|
||||
|
||||
@@ -708,7 +708,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X
|
||||
{
|
||||
st_entry ent;
|
||||
wddx_stack *stack = (wddx_stack *)user_data;
|
||||
|
||||
TSRMLS_FETCH();
|
||||
if (!strcmp((char *)name, EL_PACKET)) {
|
||||
int i;
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ static php_win32_disable_functions(TSRMLS_D)
|
||||
|
||||
if (EG(windows_version_info).dwMajorVersion < 5) {
|
||||
for (i = 0; i < function_name_cnt_5; i++) {
|
||||
if (zend_hash_del(CG(function_table), function_name_5[i], strlen(function_name_5[i]) + 1)==FAILURE) {
|
||||
if (zend_hash_str_del(CG(function_table), function_name_5[i], strlen(function_name_5[i]))==FAILURE) {
|
||||
php_printf("Unable to disable function '%s'\n", function_name_5[i]);
|
||||
return FAILURE;
|
||||
}
|
||||
@@ -144,7 +144,7 @@ static php_win32_disable_functions(TSRMLS_D)
|
||||
|
||||
if (EG(windows_version_info).dwMajorVersion < 6) {
|
||||
for (i = 0; i < function_name_cnt_6; i++) {
|
||||
if (zend_hash_del(CG(function_table), function_name_6[i], strlen(function_name_6[i]) + 1)==FAILURE) {
|
||||
if (zend_hash_str_del(CG(function_table), function_name_6[i], strlen(function_name_6[i]))==FAILURE) {
|
||||
php_printf("Unable to disable function '%s'\n", function_name_6[i]);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ void closelog(void)
|
||||
PW32G(log_source) = NULL;
|
||||
}
|
||||
if (PW32G(log_header)) {
|
||||
STR_FREE(PW32G(log_header));
|
||||
efree(PW32G(log_header));
|
||||
PW32G(log_header) = NULL;
|
||||
}
|
||||
}
|
||||
@@ -129,7 +129,7 @@ void openlog(const char *ident, int logopt, int facility)
|
||||
closelog();
|
||||
}
|
||||
|
||||
STR_FREE(PW32G(log_header));
|
||||
efree(PW32G(log_header));
|
||||
|
||||
PW32G(log_source) = RegisterEventSource(NULL, "PHP-" PHP_VERSION);
|
||||
spprintf(&PW32G(log_header), 0, (logopt & LOG_PID) ? "%s[%d]" : "%s", ident, getpid());
|
||||
|
||||
Reference in New Issue
Block a user