summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/pdo/pdo_dbh.c2
-rw-r--r--ext/pdo/pdo_sqlstate.c2
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c103
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c54
-rw-r--r--ext/pdo_pgsql/php_pdo_pgsql_int.h4
-rw-r--r--ext/soap/php_encoding.c6
-rw-r--r--ext/soap/php_sdl.c4
-rw-r--r--ext/soap/soap.c12
8 files changed, 91 insertions, 96 deletions
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c
index 9f286a5ca6..2ff3be7cbb 100644
--- a/ext/pdo/pdo_dbh.c
+++ b/ext/pdo/pdo_dbh.c
@@ -402,7 +402,7 @@ options:
zval *attr_value;
ulong long_key;
zend_string *str_key = NULL;
-
+
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(options), long_key, str_key, attr_value) {
if (str_key) {
continue;
diff --git a/ext/pdo/pdo_sqlstate.c b/ext/pdo/pdo_sqlstate.c
index 4d6a01011c..e3585844c6 100644
--- a/ext/pdo/pdo_sqlstate.c
+++ b/ext/pdo/pdo_sqlstate.c
@@ -319,7 +319,7 @@ int pdo_sqlstate_init_error_table(void)
for (i = 0; i < sizeof(err_initializer)/sizeof(err_initializer[0]); i++) {
info = &err_initializer[i];
- zend_hash_str_add_ptr(&err_hash, info->state, sizeof(info->state), info);
+ zend_hash_str_add_ptr(&err_hash, info->state, sizeof(info->state), (void *)info);
}
return SUCCESS;
diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c
index 24a5865c75..2b7f217418 100644
--- a/ext/pdo_pgsql/pgsql_driver.c
+++ b/ext/pdo_pgsql/pgsql_driver.c
@@ -137,13 +137,12 @@ static size_t pgsql_lob_read(php_stream *stream, char *buf, size_t count TSRMLS_
static int pgsql_lob_close(php_stream *stream, int close_handle TSRMLS_DC)
{
struct pdo_pgsql_lob_self *self = (struct pdo_pgsql_lob_self*)stream->abstract;
- pdo_dbh_t *dbh = self->dbh;
if (close_handle) {
lo_close(self->conn, self->lfd);
}
+ zval_ptr_dtor(&self->dbh);
efree(self);
- php_pdo_dbh_delref(dbh TSRMLS_CC);
return 0;
}
@@ -173,13 +172,13 @@ php_stream_ops pdo_pgsql_lob_stream_ops = {
NULL
};
-php_stream *pdo_pgsql_create_lob_stream(pdo_dbh_t *dbh, int lfd, Oid oid TSRMLS_DC)
+php_stream *pdo_pgsql_create_lob_stream(zval *dbh, int lfd, Oid oid TSRMLS_DC)
{
php_stream *stm;
struct pdo_pgsql_lob_self *self = ecalloc(1, sizeof(*self));
- pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
+ pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)(Z_PDO_DBH_P(dbh))->driver_data;
- self->dbh = dbh;
+ ZVAL_COPY_VALUE(&self->dbh, dbh);
self->lfd = lfd;
self->oid = oid;
self->conn = H->server;
@@ -187,7 +186,7 @@ php_stream *pdo_pgsql_create_lob_stream(pdo_dbh_t *dbh, int lfd, Oid oid TSRMLS_
stm = php_stream_alloc(&pdo_pgsql_lob_stream_ops, self, 0, "r+b");
if (stm) {
- php_pdo_dbh_addref(dbh TSRMLS_CC);
+ Z_ADDREF_P(dbh);
return stm;
}
@@ -380,17 +379,17 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
switch (attr) {
case PDO_ATTR_CLIENT_VERSION:
- ZVAL_STRING(return_value, PG_VERSION, 1);
+ ZVAL_STRING(return_value, PG_VERSION);
break;
case PDO_ATTR_SERVER_VERSION:
if (PQprotocolVersion(H->server) >= 3) { /* PostgreSQL 7.4 or later */
- ZVAL_STRING(return_value, (char*)PQparameterStatus(H->server, "server_version"), 1);
+ ZVAL_STRING(return_value, (char*)PQparameterStatus(H->server, "server_version"));
} else /* emulate above via a query */
{
PGresult *res = PQexec(H->server, "SELECT VERSION()");
if (res && PQresultStatus(res) == PGRES_TUPLES_OK) {
- ZVAL_STRING(return_value, (char *)PQgetvalue(res, 0, 0), 1);
+ ZVAL_STRING(return_value, (char *)PQgetvalue(res, 0, 0));
}
if (res) {
@@ -402,48 +401,51 @@ static int pdo_pgsql_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value
case PDO_ATTR_CONNECTION_STATUS:
switch (PQstatus(H->server)) {
case CONNECTION_STARTED:
- ZVAL_STRINGL(return_value, "Waiting for connection to be made.", sizeof("Waiting for connection to be made.")-1, 1);
+ ZVAL_STRINGL(return_value, "Waiting for connection to be made.", sizeof("Waiting for connection to be made.")-1);
break;
case CONNECTION_MADE:
case CONNECTION_OK:
- ZVAL_STRINGL(return_value, "Connection OK; waiting to send.", sizeof("Connection OK; waiting to send.")-1, 1);
+ ZVAL_STRINGL(return_value, "Connection OK; waiting to send.", sizeof("Connection OK; waiting to send.")-1);
break;
case CONNECTION_AWAITING_RESPONSE:
- ZVAL_STRINGL(return_value, "Waiting for a response from the server.", sizeof("Waiting for a response from the server.")-1, 1);
+ ZVAL_STRINGL(return_value, "Waiting for a response from the server.", sizeof("Waiting for a response from the server.")-1);
break;
case CONNECTION_AUTH_OK:
- ZVAL_STRINGL(return_value, "Received authentication; waiting for backend start-up to finish.", sizeof("Received authentication; waiting for backend start-up to finish.")-1, 1);
+ ZVAL_STRINGL(return_value, "Received authentication; waiting for backend start-up to finish.", sizeof("Received authentication; waiting for backend start-up to finish.")-1);
break;
#ifdef CONNECTION_SSL_STARTUP
case CONNECTION_SSL_STARTUP:
- ZVAL_STRINGL(return_value, "Negotiating SSL encryption.", sizeof("Negotiating SSL encryption.")-1, 1);
+ ZVAL_STRINGL(return_value, "Negotiating SSL encryption.", sizeof("Negotiating SSL encryption.")-1);
break;
#endif
case CONNECTION_SETENV:
- ZVAL_STRINGL(return_value, "Negotiating environment-driven parameter settings.", sizeof("Negotiating environment-driven parameter settings.")-1, 1);
+ ZVAL_STRINGL(return_value, "Negotiating environment-driven parameter settings.", sizeof("Negotiating environment-driven parameter settings.")-1);
break;
case CONNECTION_BAD:
default:
- ZVAL_STRINGL(return_value, "Bad connection.", sizeof("Bad connection.")-1, 1);
+ ZVAL_STRINGL(return_value, "Bad connection.", sizeof("Bad connection.")-1);
break;
}
break;
case PDO_ATTR_SERVER_INFO: {
int spid = PQbackendPID(H->server);
- char *tmp;
- spprintf(&tmp, 0,
- "PID: %d; Client Encoding: %s; Is Superuser: %s; Session Authorization: %s; Date Style: %s",
- spid,
- (char*)PQparameterStatus(H->server, "client_encoding"),
- (char*)PQparameterStatus(H->server, "is_superuser"),
- (char*)PQparameterStatus(H->server, "session_authorization"),
- (char*)PQparameterStatus(H->server, "DateStyle"));
- ZVAL_STRING(return_value, tmp, 0);
+
+
+ zend_string *str_info =
+ strpprintf(0,
+ "PID: %d; Client Encoding: %s; Is Superuser: %s; Session Authorization: %s; Date Style: %s",
+ spid,
+ (char*)PQparameterStatus(H->server, "client_encoding"),
+ (char*)PQparameterStatus(H->server, "is_superuser"),
+ (char*)PQparameterStatus(H->server, "session_authorization"),
+ (char*)PQparameterStatus(H->server, "DateStyle"));
+
+ ZVAL_STR(return_value, str_info);
}
break;
@@ -533,7 +535,7 @@ static PHP_METHOD(PDO, pgsqlCopyFromArray)
RETURN_FALSE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -564,33 +566,30 @@ static PHP_METHOD(PDO, pgsqlCopyFromArray)
if (status == PGRES_COPY_IN && pgsql_result) {
int command_failed = 0;
int buffer_len = 0;
- zval **tmp;
- HashPosition pos;
+ zval *tmp;
PQclear(pgsql_result);
- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(pg_rows), &pos);
- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), (void **) &tmp, &pos) == SUCCESS) {
+ ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pg_rows), tmp) {
int query_len;
convert_to_string_ex(tmp);
- if (buffer_len < Z_STRLEN_PP(tmp)) {
- buffer_len = Z_STRLEN_PP(tmp);
+ if (buffer_len < Z_STRLEN_P(tmp)) {
+ buffer_len = Z_STRLEN_P(tmp);
query = erealloc(query, buffer_len + 2); /* room for \n\0 */
}
- memcpy(query, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
- query_len = Z_STRLEN_PP(tmp);
+ memcpy(query, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp));
+ query_len = Z_STRLEN_P(tmp);
if (query[query_len - 1] != '\n') {
query[query_len++] = '\n';
}
query[query_len] = '\0';
if (PQputCopyData(H->server, query, query_len) != 1) {
- efree(query);
- pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
+ efree(query);
+ pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
PDO_HANDLE_DBH_ERR();
- RETURN_FALSE;
- }
- zend_hash_move_forward_ex(Z_ARRVAL_P(pg_rows), &pos);
- }
+ RETURN_FALSE;
+ }
+ } ZEND_HASH_FOREACH_END();
if (query) {
efree(query);
}
@@ -641,7 +640,7 @@ static PHP_METHOD(PDO, pgsqlCopyFromFile)
}
/* Obtain db Handler */
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -741,7 +740,7 @@ static PHP_METHOD(PDO, pgsqlCopyToFile)
return;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -834,7 +833,7 @@ static PHP_METHOD(PDO, pgsqlCopyToArray)
return;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -899,7 +898,7 @@ static PHP_METHOD(PDO, pgsqlLOBCreate)
pdo_pgsql_db_handle *H;
Oid lfd;
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -907,9 +906,9 @@ static PHP_METHOD(PDO, pgsqlLOBCreate)
lfd = lo_creat(H->server, INV_READ|INV_WRITE);
if (lfd != InvalidOid) {
- char *buf;
- spprintf(&buf, 0, "%lu", (long) lfd);
- RETURN_STRING(buf, 0);
+ zend_string *buf = strpprintf(0, "%lu", (long) lfd);
+
+ RETURN_STR(buf);
}
pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL);
@@ -947,7 +946,7 @@ static PHP_METHOD(PDO, pgsqlLOBOpen)
mode = INV_READ|INV_WRITE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -956,7 +955,7 @@ static PHP_METHOD(PDO, pgsqlLOBOpen)
lfd = lo_open(H->server, oid, mode);
if (lfd >= 0) {
- php_stream *stream = pdo_pgsql_create_lob_stream(dbh, lfd, oid TSRMLS_CC);
+ php_stream *stream = pdo_pgsql_create_lob_stream(getThis(), lfd, oid TSRMLS_CC);
if (stream) {
php_stream_to_zval(stream, return_value);
return;
@@ -990,7 +989,7 @@ static PHP_METHOD(PDO, pgsqlLOBUnlink)
RETURN_FALSE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
PDO_DBH_CLEAR_ERR();
@@ -1021,7 +1020,7 @@ static PHP_METHOD(PDO, pgsqlGetNotify)
RETURN_FALSE;
}
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
if (result_type == PDO_FETCH_USE_DEFAULT) {
@@ -1075,7 +1074,7 @@ static PHP_METHOD(PDO, pgsqlGetPid)
pdo_dbh_t *dbh;
pdo_pgsql_db_handle *H;
- dbh = zend_object_store_get_object(getThis() TSRMLS_CC);
+ dbh = Z_PDO_DBH_P(getThis());
PDO_CONSTRUCT_CHECK;
H = (pdo_pgsql_db_handle *)dbh->driver_data;
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index c9c9e5c450..bfceaf4949 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -255,16 +255,17 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
case PDO_PARAM_EVT_NORMALIZE:
/* decode name from $1, $2 into 0, 1 etc. */
if (param->name) {
- if (param->name[0] == '$') {
- param->paramno = atoi(param->name + 1);
+ if (param->name->val[0] == '$') {
+ param->paramno = atoi(param->name->val + 1);
} else {
/* resolve parameter name to rewritten name */
- char *nameptr;
- if (stmt->bound_param_map && SUCCESS == zend_hash_find(stmt->bound_param_map,
- param->name, param->namelen + 1, (void**)&nameptr)) {
- param->paramno = atoi(nameptr + 1) - 1;
+ zval *namevar;
+
+ if (stmt->bound_param_map && (namevar = zend_hash_find(stmt->bound_param_map,
+ param->name)) != NULL) {
+ param->paramno = atoi(Z_PTR_P(namevar) + 1) - 1;
} else {
- pdo_raise_impl_error(stmt->dbh, stmt, "HY093", param->name TSRMLS_CC);
+ pdo_raise_impl_error(stmt->dbh, stmt, "HY093", param->name->val TSRMLS_CC);
return 0;
}
}
@@ -303,7 +304,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB &&
- Z_TYPE_P(param->parameter) == IS_RESOURCE) {
+ Z_TYPE(param->parameter) == IS_RESOURCE) {
php_stream *stm;
php_stream_from_zval_no_verify(stm, &param->parameter);
if (stm) {
@@ -322,15 +323,12 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
S->param_types[param->paramno] = OIDOID;
return 1;
} else {
- int len;
-
- SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
- Z_TYPE_P(param->parameter) = IS_STRING;
-
- if ((len = php_stream_copy_to_mem(stm, &Z_STRVAL_P(param->parameter), PHP_STREAM_COPY_ALL, 0)) > 0) {
- Z_STRLEN_P(param->parameter) = len;
+ zend_string *str = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0);
+ if (str != NULL) {
+ SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
+ ZVAL_STR(&param->parameter, str);
} else {
- ZVAL_EMPTY_STRING(param->parameter);
+ ZVAL_EMPTY_STRING(&param->parameter);
}
}
} else {
@@ -341,18 +339,18 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
}
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL ||
- Z_TYPE_P(param->parameter) == IS_NULL) {
+ Z_TYPE(param->parameter) == IS_NULL) {
S->param_values[param->paramno] = NULL;
S->param_lengths[param->paramno] = 0;
- } else if (Z_TYPE_P(param->parameter) == IS_BOOL) {
- S->param_values[param->paramno] = Z_BVAL_P(param->parameter) ? "t" : "f";
+ } else if (Z_TYPE(param->parameter) == IS_FALSE || Z_TYPE(param->parameter) == IS_TRUE) {
+ S->param_values[param->paramno] = Z_TYPE(param->parameter) == IS_TRUE ? "t" : "f";
S->param_lengths[param->paramno] = 1;
S->param_formats[param->paramno] = 0;
} else {
SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
- convert_to_string(param->parameter);
- S->param_values[param->paramno] = Z_STRVAL_P(param->parameter);
- S->param_lengths[param->paramno] = Z_STRLEN_P(param->parameter);
+ convert_to_string_ex(&param->parameter);
+ S->param_values[param->paramno] = Z_STRVAL(param->parameter);
+ S->param_lengths[param->paramno] = Z_STRLEN(param->parameter);
S->param_formats[param->paramno] = 0;
}
@@ -371,7 +369,7 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
((param->param_type & PDO_PARAM_INPUT_OUTPUT) != PDO_PARAM_INPUT_OUTPUT)) {
SEPARATE_ZVAL(&param->parameter);
param->param_type = PDO_PARAM_STR;
- ZVAL_STRINGL(param->parameter, Z_BVAL_P(param->parameter) ? "t" : "f", 1, 1);
+ ZVAL_STRINGL(&param->parameter, Z_TYPE(param->parameter) == IS_TRUE ? "t" : "f", 1);
}
}
return 1;
@@ -450,11 +448,9 @@ static int pgsql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
case OIDOID:
/* did the user bind the column as a LOB ? */
if (stmt->bound_columns && (
- SUCCESS == zend_hash_index_find(stmt->bound_columns,
- colno, (void**)&param) ||
- SUCCESS == zend_hash_find(stmt->bound_columns,
- cols[colno].name, cols[colno].namelen,
- (void**)&param))) {
+ (param = zend_hash_index_find_ptr(stmt->bound_columns, colno)) != NULL ||
+ (param = zend_hash_str_find_ptr(stmt->bound_columns, cols[colno].name, cols[colno].namelen)) != NULL)) {
+
if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) {
cols[colno].param_type = PDO_PARAM_LOB;
break;
@@ -526,7 +522,7 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned
Oid oid = (Oid)strtoul(*ptr, &end_ptr, 10);
int loid = lo_open(S->H->server, oid, INV_READ);
if (loid >= 0) {
- *ptr = (char*)pdo_pgsql_create_lob_stream(stmt->dbh, loid, oid TSRMLS_CC);
+ *ptr = (char*)pdo_pgsql_create_lob_stream(&stmt->database_object_handle, loid, oid TSRMLS_CC);
*len = 0;
return *ptr ? 1 : 0;
}
diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h
index 1fedababd2..4d0652049e 100644
--- a/ext/pdo_pgsql/php_pdo_pgsql_int.h
+++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h
@@ -95,7 +95,7 @@ enum {
};
struct pdo_pgsql_lob_self {
- pdo_dbh_t *dbh;
+ zval dbh;
PGconn *conn;
int lfd;
Oid oid;
@@ -109,7 +109,7 @@ enum pdo_pgsql_specific_constants {
PGSQL_TRANSACTION_UNKNOWN = PQTRANS_UNKNOWN
};
-php_stream *pdo_pgsql_create_lob_stream(pdo_dbh_t *stmt, int lfd, Oid oid TSRMLS_DC);
+php_stream *pdo_pgsql_create_lob_stream(zval *pdh, int lfd, Oid oid TSRMLS_DC);
extern php_stream_ops pdo_pgsql_lob_stream_ops;
#endif /* PHP_PDO_PGSQL_INT_H */
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 9afaa51b9c..29ca2ab41d 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -642,11 +642,11 @@ zval *to_zval_user(zval *ret, encodeTypePtr type, xmlNodePtr node TSRMLS_DC)
ZVAL_STRING(&data, (char*)xmlBufferContent(buf));
xmlBufferFree(buf);
xmlFreeNode(copy);
-
- ZVAL_NULL(ret);
if (call_user_function(EG(function_table), NULL, &type->map->to_zval, ret, 1, &data TSRMLS_CC) == FAILURE) {
soap_error0(E_ERROR, "Encoding: Error calling from_xml callback");
+ } else if (EG(exception)) {
+ ZVAL_NULL(ret);
}
zval_ptr_dtor(&data);
} else {
@@ -3063,9 +3063,9 @@ static xmlNodePtr to_xml_list(encodeTypePtr enc, zval *data, int style, xmlNodeP
*next = '\0';
next++;
}
-//??? ZVAL_STRING(&dummy_zval, start, 0);
ZVAL_STRING(&dummy_zval, start);
dummy = master_to_xml(list_enc, &dummy_zval, SOAP_LITERAL, ret TSRMLS_CC);
+ zval_ptr_dtor(&dummy_zval);
if (dummy && dummy->children && dummy->children->content) {
if (list.s && list.s->len != 0) {
smart_str_appendc(&list, ' ');
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index ff98fae696..faafdecee7 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -446,7 +446,7 @@ static void load_wsdl_ex(zval *this_ptr, char *struri, sdlCtx *ctx, int include
static sdlSoapBindingFunctionHeaderPtr wsdl_soap_binding_header(sdlCtx* ctx, xmlNodePtr header, char* wsdl_soap_namespace, int fault)
{
xmlAttrPtr tmp;
- xmlNodePtr *message, part;
+ xmlNodePtr message, part;
char *ctype;
sdlSoapBindingFunctionHeaderPtr h;
@@ -469,7 +469,7 @@ static sdlSoapBindingFunctionHeaderPtr wsdl_soap_binding_header(sdlCtx* ctx, xml
if (!tmp) {
soap_error0(E_ERROR, "Parsing WSDL: Missing part attribute for <header>");
}
- part = get_node_with_attribute_ex((*message)->children, "part", WSDL_NAMESPACE, "name", (char*)tmp->children->content, NULL);
+ part = get_node_with_attribute_ex(message->children, "part", WSDL_NAMESPACE, "name", (char*)tmp->children->content, NULL);
if (!part) {
soap_error1(E_ERROR, "Parsing WSDL: Missing part '%s' in <message>", tmp->children->content);
}
diff --git a/ext/soap/soap.c b/ext/soap/soap.c
index 937d50b15d..570b1ad640 100644
--- a/ext/soap/soap.c
+++ b/ext/soap/soap.c
@@ -1029,22 +1029,22 @@ static HashTable* soap_create_typemap(sdlPtr sdl, HashTable *ht TSRMLS_DC)
ZEND_HASH_FOREACH_STR_KEY_VAL(ht2, name, tmp) {
if (name) {
- if (name->len == sizeof("type_name") &&
+ if (name->len == sizeof("type_name")-1 &&
strncmp(name->val, "type_name", sizeof("type_name")-1) == 0) {
if (Z_TYPE_P(tmp) == IS_STRING) {
type_name = Z_STRVAL_P(tmp);
} else if (Z_TYPE_P(tmp) != IS_NULL) {
}
- } else if (name->len == sizeof("type_ns") &&
+ } else if (name->len == sizeof("type_ns")-1 &&
strncmp(name->val, "type_ns", sizeof("type_ns")-1) == 0) {
if (Z_TYPE_P(tmp) == IS_STRING) {
type_ns = Z_STRVAL_P(tmp);
} else if (Z_TYPE_P(tmp) != IS_NULL) {
}
- } else if (name->len == sizeof("to_xml") &&
+ } else if (name->len == sizeof("to_xml")-1 &&
strncmp(name->val, "to_xml", sizeof("to_xml")-1) == 0) {
to_xml = tmp;
- } else if (name->len == sizeof("from_xml") &&
+ } else if (name->len == sizeof("from_xml")-1 &&
strncmp(name->val, "from_xml", sizeof("from_xml")-1) == 0) {
to_zval = tmp;
}
@@ -4382,16 +4382,15 @@ static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, char *paramName,
encodePtr enc;
zval defval;
+ ZVAL_UNDEF(&defval);
if (param != NULL) {
enc = param->encode;
if (val == NULL) {
if (param->element) {
if (param->element->fixed) {
- //??? val has to be freed
ZVAL_STRING(&defval, param->element->fixed);
val = &defval;
} else if (param->element->def && !param->element->nillable) {
- //??? val has to be freed
ZVAL_STRING(&defval, param->element->def);
val = &defval;
}
@@ -4401,6 +4400,7 @@ static xmlNodePtr serialize_zval(zval *val, sdlParamPtr param, char *paramName,
enc = NULL;
}
xmlParam = master_to_xml(enc, val, style, parent TSRMLS_CC);
+ zval_ptr_dtor(&defval);
if (!strcmp((char*)xmlParam->name, "BOGUS")) {
xmlNodeSetName(xmlParam, BAD_CAST(paramName));
}