Patch SCA_SDO-1.2.4-fix_php_5.6.9_gcc_4.9.2-3.unified.patch for SCA_SDO Bug #68581
Patch version 2015-10-31 13:47 UTC
Return to Bug #68581 |
Download this patch
Patch Revisions:
Developer: psagi@freemail.hu
unchanged:
--- php-sca-sdo-1.2.4/SCA_SDO-1.2.4/SCA/Bindings/soap/Proxy.php 2008-03-03 18:01:55.000000000 +0000
+++ php-sca-sdo-1.2.4/SCA_SDO-1.2.4/SCA/Bindings/soap/Proxy.php 2011-06-24 19:50:18.000000000 +0000
@@ -364,7 +364,7 @@
}
- public function __setLocation($location) {
+ public function __setLocation($location = NULL) {
$this->location = $location;
}
unchanged:
--- php-sca-sdo-1.2.4/SCA_SDO-1.2.4/SCA/SCA_AnnotationRules.php 2007-05-04 15:05:41.000000000 +0000
+++ php-sca-sdo-1.2.4/SCA_SDO-1.2.4/SCA/SCA_AnnotationRules.php 2011-06-24 19:23:59.000000000 +0000
@@ -219,7 +219,7 @@
$comment = false ;
$commentArray = null ;
$j = 0 ;
- $line = ereg_replace("\t", " ", $line);
+ $line = preg_replace("{[ \t]+}", " ", $line);
$arrayOfLine = explode(' ', (trim($line)));
/**
unchanged:
--- php-sca-sdo-1.2.4/SCA_SDO-1.2.4/SCA/SCA_CommentReader.php 2008-03-03 18:01:52.000000000 +0000
+++ php-sca-sdo-1.2.4/SCA_SDO-1.2.4/SCA/SCA_CommentReader.php 2011-06-24 19:23:02.000000000 +0000
@@ -378,11 +378,11 @@
$targetLine = substr($this->docComment, $pos);
$pos = $pos + strlen($bindingAnnotation);
- $targetLine = ereg_replace("\t", " ", $targetLine);
+ $targetLine = preg_replace("{[ \t]+}", " ", $targetLine);
$words = explode(" ", $targetLine);
for ($i = 0; $i < count($words); $i++) {
$word = trim($words[$i++]);
- if (strpos($word, $word, $bindingAnnotation) === 0) {
+ if (strpos($word, $bindingAnnotation) === 0) {
$binding = substr($word, strlen($bindingAnnotation));
break;
}
@@ -589,7 +589,7 @@
{
$targetLine = strchr($this->docComment, "@" . $label);
- $targetLine = ereg_replace("\t", " ", $targetLine);
+ $targetLine = preg_replace("{[ \t]+}", " ", $targetLine);
$words = explode(" ", $targetLine);
$phoneme = $words[ 1 ];
unchanged:
--- php-sca-sdo-1.2.4/SCA_SDO-1.2.4/commonj/sdo/SDODataConverter.cpp 2007-06-20 16:18:35.000000000 +0000
+++ php-sca-sdo-1.2.4/SCA_SDO-1.2.4/commonj/sdo/SDODataConverter.cpp 2011-06-23 20:07:54.000000000 +0000
@@ -18,6 +18,7 @@
/* $Rev: 509991 $ $Date: 2007-02-21 12:58:33 +0000 (Wed, 21 Feb 2007) $ */
#include <string.h>
+#include <stdio.h>
#include "commonj/sdo/SDODataConverter.h"
#include "commonj/sdo/SDORuntimeException.h"
unchanged:
--- php-sca-sdo-1.2.4/SCA_SDO-1.2.4/sdo.cpp 2006-09-29 15:04:22.000000000 +0000
+++ php-sca-sdo-1.2.4/SCA_SDO-1.2.4/sdo.cpp 2011-06-20 20:34:01.000000000 +0000
@@ -77,17 +77,17 @@
/* }}} */
/* {{{ single SDO_DataObject parameter */
-static ZEND_BEGIN_ARG_INFO(arginfo_sdo_dataobject, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_sdo_dataobject, 0)
ZEND_ARG_OBJ_INFO(0, data_object, SDO_DataObject, 0)
ZEND_END_ARG_INFO();
/* }}} */
/* {{{ SDO_PropertyAccess methods */
-static ZEND_BEGIN_ARG_INFO(arginfo___get, 0)
+ZEND_BEGIN_ARG_INFO(arginfo___get, 0)
ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();
-static ZEND_BEGIN_ARG_INFO(arginfo___set, 0)
+ZEND_BEGIN_ARG_INFO(arginfo___set, 0)
ZEND_ARG_INFO(0, name)
ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO();
@@ -100,7 +100,7 @@
/* }}} */
/* {{{ SDO_DataObject methods */
-static ZEND_BEGIN_ARG_INFO(arginfo_sdo_dataobject_createdataobject, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_sdo_dataobject_createdataobject, 0)
ZEND_ARG_INFO(0, identifier)
ZEND_END_ARG_INFO();
@@ -116,16 +116,16 @@
/* }}} */
/* {{{ SDO_Sequence methods */
-static ZEND_BEGIN_ARG_INFO(arginfo_sdo_sequence_getproperty, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_sdo_sequence_getproperty, 0)
ZEND_ARG_INFO(0, sequence_index)
ZEND_END_ARG_INFO();
-static ZEND_BEGIN_ARG_INFO(arginfo_sdo_sequence_move, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_sdo_sequence_move, 0)
ZEND_ARG_INFO(0, to_index)
ZEND_ARG_INFO(0, from_index)
ZEND_END_ARG_INFO();
-static ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_sequence_insert, 0, ZEND_RETURN_VALUE, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_sequence_insert, 0, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, value)
ZEND_ARG_INFO(0, sequence_index)
ZEND_ARG_INFO(0, property_identifier)
@@ -141,7 +141,7 @@
/* }}} */
/* {{{ SDO_List methods */
-static ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_list_insert, 0, ZEND_RETURN_VALUE, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_list_insert, 0, ZEND_RETURN_VALUE, 1)
ZEND_ARG_INFO(0, value)
ZEND_ARG_INFO(0, index)
ZEND_END_ARG_INFO();
@@ -155,7 +155,7 @@
/* }}} */
/* {{{ SDO_DataFactory methods */
-static ZEND_BEGIN_ARG_INFO(arginfo_sdo_datafactory_create, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_sdo_datafactory_create, 0)
ZEND_ARG_INFO(0, type_namespace_uri)
ZEND_ARG_INFO(0, type_name)
ZEND_END_ARG_INFO();
@@ -174,13 +174,13 @@
/* }}} */
/* {{{ SDO_DAS_DataFactory methods */
-static ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_das_datafactory_addType, 0, ZEND_RETURN_VALUE, 2)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_das_datafactory_addType, 0, ZEND_RETURN_VALUE, 2)
ZEND_ARG_INFO(0, type_namespace_uri)
ZEND_ARG_INFO(0, type_name)
ZEND_ARG_INFO(0, options)
ZEND_END_ARG_INFO();
-static ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_das_datafactory_addPropertyToType, 0, ZEND_RETURN_VALUE, 5)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_das_datafactory_addPropertyToType, 0, ZEND_RETURN_VALUE, 5)
ZEND_ARG_INFO(0, parent_type_namespace_uri)
ZEND_ARG_INFO(0, parent_type_name)
ZEND_ARG_INFO(0, property_name)
@@ -260,7 +260,7 @@
/* }}} */
/* {{{ SDO_Model_Type methods */
-static ZEND_BEGIN_ARG_INFO(arginfo_sdo_model_type_identifier, 0)
+ZEND_BEGIN_ARG_INFO(arginfo_sdo_model_type_identifier, 0)
ZEND_ARG_INFO(0, identifier)
ZEND_END_ARG_INFO();
@@ -322,7 +322,7 @@
/* }}} */
/* {{{ SDO_Model_ReflectionDataObject methods */
-static ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_model_reflectiondataobject_export, 0, ZEND_RETURN_VALUE, 1)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_sdo_model_reflectiondataobject_export, 0, ZEND_RETURN_VALUE, 1)
ZEND_ARG_OBJ_INFO(0, reflector, Reflector, 0)
ZEND_ARG_INFO(0, return_output)
ZEND_END_ARG_INFO();
@@ -379,7 +379,7 @@
/* {{{ sdo_deps
*/
#if ZEND_MODULE_API_NO >= 20050922
-static zend_module_dep sdo_deps[] = {
+zend_module_dep sdo_deps[] = {
ZEND_MOD_REQUIRED("libxml")
ZEND_MOD_REQUIRED("spl")
ZEND_MOD_REQUIRED("Reflection")
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_CPPException.cpp
+++ b/SCA_SDO-1.2.4/SDO_CPPException.cpp
@@ -85,10 +85,15 @@
z_object.value.obj = zend_objects_new(&object, ce TSRMLS_CC);
z_object.value.obj.handlers = &sdo_cppexception_object_handlers;
+/*
ALLOC_HASHTABLE(object->properties);
zend_hash_init(object->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(object->properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(object, ce);
return z_object.value.obj;
}
@@ -196,7 +201,7 @@
const char *message = cpp_exception->getMessageText();
const char *file = cpp_exception->getFileName();
long line = cpp_exception->getLineNumber();
- char *class_name, *space;
+ const char *class_name, *space;
long severity;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_DAS_ChangeSummary.cpp
+++ b/SCA_SDO-1.2.4/SDO_DAS_ChangeSummary.cpp
@@ -59,8 +59,10 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_das_changesummary_object *)object;
+/*
zend_hash_destroy(my_object->zo.properties);
FREE_HASHTABLE(my_object->zo.properties);
+*/
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
FREE_HASHTABLE(my_object->zo.guards);
@@ -90,14 +92,23 @@
memset(my_object, 0, sizeof(sdo_das_changesummary_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(das_changesummary), sdo_das_changesummary_object_free_storage, NULL TSRMLS_CC);
- retval.handlers = zend_get_std_object_handlers();
- retval.handlers->add_ref = SDO_FUNC_ADDREF(das_changesummary);
- retval.handlers->del_ref = SDO_FUNC_DELREF(das_changesummary);
+// retval.handlers = zend_get_std_object_handlers();
+ zend_object_handlers* handlers_p = zend_get_std_object_handlers();
+// retval.handlers->add_ref = SDO_FUNC_ADDREF(das_changesummary);
+ handlers_p->add_ref = SDO_FUNC_ADDREF(das_changesummary);
+// retval.handlers->del_ref = SDO_FUNC_DELREF(das_changesummary);
+ handlers_p->del_ref = SDO_FUNC_DELREF(das_changesummary);
+ retval.handlers = handlers_p;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
return retval;
}
@@ -108,7 +119,7 @@
void sdo_das_changesummary_new(zval *me, ChangeSummaryPtr change_summary TSRMLS_DC)
{
sdo_das_changesummary_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, sdo_das_changesummary_class_entry) == FAILURE) {
@@ -211,7 +222,7 @@
zval *z_dataobject;
DataObjectPtr dop;
ChangeSummaryPtr change_summary;
- char *class_name, *space;
+ const char *class_name, *space;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"O", &z_dataobject, sdo_dataobjectimpl_class_entry) == FAILURE)
@@ -282,7 +293,7 @@
DataObjectPtr dop;
ChangeSummaryPtr change_summary;
long change_type = CS_NONE;
- char *class_name, *space;
+ const char *class_name, *space;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"O", &z_dataobject, sdo_dataobjectimpl_class_entry) == FAILURE)
@@ -329,7 +340,7 @@
DataObjectPtr dop, container_dop;
ChangeSummaryPtr change_summary;
long change_type = 0;
- char *class_name, *space;
+ const char *class_name, *space;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"O", &z_dataobject, sdo_dataobjectimpl_class_entry) == FAILURE)
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_DAS_DataFactory.cpp
+++ b/SCA_SDO-1.2.4/SDO_DAS_DataFactory.cpp
@@ -63,8 +63,10 @@
SDO_DEBUG_FREE(object);
+/*
zend_hash_destroy(my_object->zo.properties);
FREE_HASHTABLE(my_object->zo.properties);
+*/
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
FREE_HASHTABLE(my_object->zo.guards);
@@ -93,10 +95,15 @@
memset(my_object, 0, sizeof(sdo_das_df_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(das_df), sdo_das_df_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_das_df_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -125,7 +132,7 @@
void sdo_das_df_new(zval *me, DataFactoryPtr dfp TSRMLS_DC)
{
sdo_das_df_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, sdo_das_datafactoryimpl_class_entry) == FAILURE) {
@@ -253,7 +260,7 @@
char *basetype_uri;
char *basetype_name;
- char *class_name, *space;
+ const char *class_name, *space;
if (ZEND_NUM_ARGS() < 2)
WRONG_PARAM_COUNT;
@@ -400,7 +407,7 @@
zval *default_value = NULL;
sdo_das_df_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
if (ZEND_NUM_ARGS() < 5)
WRONG_PARAM_COUNT;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_DAS_Setting.cpp
+++ b/SCA_SDO-1.2.4/SDO_DAS_Setting.cpp
@@ -68,8 +68,7 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_das_setting_object *)object;
- zend_hash_destroy(my_object->zo.properties);
- FREE_HASHTABLE(my_object->zo.properties);
+ sdo_destroy_properties_hash(&(my_object->zo));
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
FREE_HASHTABLE(my_object->zo.guards);
@@ -91,10 +90,15 @@
memset(my_object, 0, sizeof(sdo_das_setting_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(das_setting), sdo_das_setting_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_das_setting_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -108,7 +112,7 @@
void sdo_das_setting_new(zval *me, Setting *setting TSRMLS_DC)
{
sdo_das_setting_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, sdo_das_setting_class_entry) == FAILURE) {
@@ -134,7 +138,7 @@
wchar_t wchar_value;
DataObjectPtr doh_value;
zval *return_value;
- char *class_name, *space;
+ const char *class_name, *space;
MAKE_STD_ZVAL(return_value);
try {
@@ -242,7 +246,7 @@
const char *property_name;
my_object = sdo_das_setting_get_instance(object TSRMLS_CC);
- zend_hash_clean(my_object->zo.properties);
+ sdo_init_properties_hash(&(my_object->zo));
try {
setting = my_object->setting;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_DAS_XML.cpp
+++ b/SCA_SDO-1.2.4/SDO_DAS_XML.cpp
@@ -92,7 +92,7 @@
/* {{{ SDO_DAS_XML Class methods
*/
-function_entry sdo_das_xml_methods[] = {
+zend_function_entry sdo_das_xml_methods[] = {
ZEND_ME(SDO_DAS_XML, __construct, sdo_das_xml___construct_args,
ZEND_ACC_PRIVATE)
ZEND_ME(SDO_DAS_XML, create, sdo_das_xml_create_args,
@@ -155,8 +155,10 @@
* PHP version of SDO_DAS_DataFactory
*/
xmldas_object *xmldas = (xmldas_object *)object;
+/*
zend_hash_destroy(xmldas->zo.properties);
FREE_HASHTABLE(xmldas->zo.properties);
+*/
if (xmldas->zo.guards) {
zend_hash_destroy(xmldas->zo.guards);
@@ -183,10 +185,15 @@
xmldas->zo.ce = ce;
xmldas->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(xmldas->zo.properties);
zend_hash_init(xmldas->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(xmldas->zo.properties, &ce->default_properties,
(copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
+*/
+ object_properties_init(&(xmldas->zo), ce);
retval.handle = zend_objects_store_put(xmldas, SDO_FUNC_DESTROY(das_xml),
sdo_das_xml_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_das_xml_object_handlers;
@@ -260,7 +267,7 @@
*/
static int sdo_das_xml_add_types(xmldas_object *xmldas, char *file_name TSRMLS_DC)
{
- char *class_name, *space;
+ const char *class_name, *space;
int error_count;
try {
@@ -361,7 +368,7 @@
*/
PHP_METHOD(SDO_DAS_XML, __construct)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
php_error(E_ERROR, "%s%s%s(): internal error - private constructor was called",
@@ -430,7 +437,7 @@
char *key;
int key_len = 0;
DataFactoryPtr dataFactoryPtr = NULL;
- char *class_name, *space;
+ const char *class_name, *space;
int rc = SUCCESS;
zval *args = NULL;
zval z_tmp;
@@ -603,7 +610,7 @@
xmldas_object *xmldas;
char *file_name;
int file_name_len;
- char *class_name, *space;
+ const char *class_name, *space;
bool exception_thrown = false;
if (ZEND_NUM_ARGS() != 1) {
@@ -700,7 +707,7 @@
xmldas_object *xmldas;
char *xml_string;
int xml_string_len;
- char *class_name, *space;
+ const char *class_name, *space;
bool exception_thrown = false;
if (ZEND_NUM_ARGS() != 1) {
@@ -791,7 +798,7 @@
char *xml_file;
int xml_file_len;
long indent = -1;
- char *class_name, *space;
+ const char *class_name, *space;
if (ZEND_NUM_ARGS() != 2 && ZEND_NUM_ARGS() != 3) {
WRONG_PARAM_COUNT;
@@ -826,7 +833,7 @@
xmldocument_object *xmldocument;
xmldas_object *xmldas;
long indent = -1;
- char *class_name, *space;
+ const char *class_name, *space;
if (ZEND_NUM_ARGS() != 1 && ZEND_NUM_ARGS() != 2) {
WRONG_PARAM_COUNT;
@@ -871,7 +878,7 @@
int element_name_len;
zval *z_dataobject;
DataObjectPtr dop;
- char *class_name, *space;
+ const char *class_name, *space;
if (ZEND_NUM_ARGS() > 3) {
WRONG_PARAM_COUNT;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_DAS_XML_Document.cpp
+++ b/SCA_SDO-1.2.4/SDO_DAS_XML_Document.cpp
@@ -54,7 +54,7 @@
*
* Every method of SDO_DAS_XML_Document class needs to be defined here
*/
-function_entry sdo_das_xml_document_methods[] = {
+zend_function_entry sdo_das_xml_document_methods[] = {
ZEND_ME(SDO_DAS_XML_Document, getRootDataObject, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_XML_Document, getRootElementURI, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_XML_Document, getRootElementName, 0, ZEND_ACC_PUBLIC)
@@ -84,8 +84,10 @@
SDO_DEBUG_FREE(object);
xmldocument_object *xmldocument = (xmldocument_object *) object;
+/*
zend_hash_destroy(xmldocument->zo.properties);
FREE_HASHTABLE(xmldocument->zo.properties);
+*/
if (xmldocument->zo.guards) {
zend_hash_destroy(xmldocument->zo.guards);
@@ -112,11 +114,16 @@
xmldocument->zo.ce = ce;
xmldocument->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(xmldocument->zo.properties);
zend_hash_init(xmldocument->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(xmldocument->zo.properties, &ce->default_properties,
(copy_ctor_func_t) zval_add_ref, (void *) &tmp,
sizeof(zval *));
+*/
+ object_properties_init(&(xmldocument->zo), ce);
retval.handle = zend_objects_store_put(xmldocument, SDO_FUNC_DESTROY(das_xml_document),
sdo_das_xml_document_object_free_storage,
NULL TSRMLS_CC);
@@ -193,7 +200,7 @@
{
xmldocument_object *xmldocument;
DataObjectPtr root_do;
- char *class_name, *space;
+ const char *class_name, *space;
xmldocument = (xmldocument_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
@@ -264,7 +271,7 @@
{
zend_bool xml_declaration;
xmldocument_object *xmldocument;
- char *class_name, *space;
+ const char *class_name, *space;
if (ZEND_NUM_ARGS() != 1) {
WRONG_PARAM_COUNT;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_DataObject.cpp
+++ b/SCA_SDO-1.2.4/SDO_DataObject.cpp
@@ -75,14 +75,13 @@
static void sdo_do_object_free_storage(void *object TSRMLS_DC)
{
sdo_do_object *my_object;
- char *space;
- char *class_name;
+ const char *space;
+ const char *class_name;
SDO_DEBUG_FREE(object);
my_object = (sdo_do_object *)object;
- zend_hash_destroy(my_object->zo.properties);
- FREE_HASHTABLE(my_object->zo.properties);
+ sdo_destroy_properties_hash(&(my_object->zo));
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
@@ -123,10 +122,15 @@
memset(my_object, 0, sizeof(sdo_do_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(do), sdo_do_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_do_object_handlers;
@@ -158,7 +162,7 @@
void sdo_do_new(zval *me, DataObjectPtr dop TSRMLS_DC)
{
sdo_do_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
long object_handle = (long)dop->getUserData();
@@ -236,7 +240,7 @@
sdo_do_object *my_object = (sdo_do_object *)NULL;
DataObjectPtr dop;
int return_value = 0;
- char *class_name, *space;
+ const char *class_name, *space;
my_object = sdo_do_get_instance(object TSRMLS_CC);
@@ -329,6 +333,14 @@
}
/* }}} */
+static int sdo_do_has_property(
+ zval *object, zval *offset, int check_empty, const zend_literal *key
+ TSRMLS_DC
+)
+{
+ return sdo_do_has_dimension(object, offset, check_empty);
+}
+
/* {{{ sdo_do_read_list
*/
static zval *sdo_do_read_list(sdo_do_object *sdo, const char *xpath, const Property *propertyp TSRMLS_DC)
@@ -364,7 +376,7 @@
wchar_t wchar_value;
DataObjectPtr doh_value;
zval *return_value = NULL;
- char *class_name, *space;
+ const char *class_name, *space;
try {
if (propertyp->isMany()) {
@@ -543,6 +555,12 @@
}
/* }}} */
+static zval *sdo_do_read_property(
+ zval *object, zval *offset, int type, const zend_literal *key TSRMLS_DC)
+{
+ return sdo_do_read_dimension(object, offset, type);
+}
+
/* {{{ sdo_do_unset_dimension
*/
static void sdo_do_unset_dimension(zval *object, zval *offset TSRMLS_DC)
@@ -566,6 +584,13 @@
}
/* }}} */
+static void sdo_do_unset_property(
+ zval *object, zval *offset, const zend_literal *key TSRMLS_DC
+)
+{
+ return sdo_do_unset_dimension(object, offset);
+}
+
/* {{{ sdo_do_write_dimension
*/
static void sdo_do_write_dimension(zval *object, zval *offset, zval *z_propertyValue TSRMLS_DC)
@@ -576,7 +601,7 @@
DataObjectPtr dop;
zval temp_zval;
Type::Types type_enum;
- char *class_name, *space;
+ const char *class_name, *space;
my_object = sdo_do_get_instance(object TSRMLS_CC);
dop = my_object->dop;
@@ -719,6 +744,14 @@
}
/* }}} */
+static void sdo_do_write_property(
+ zval *object, zval *offset, zval *z_propertyValue,
+ const zend_literal* key TSRMLS_DC
+)
+{
+ return sdo_do_write_dimension(object, offset, z_propertyValue);
+}
+
/* {{{ sdo_do_get_properties
* called as a result of print_r() or vardump(), but doesn't get called for reflection
* Returns an array of name=>value pairs for the properties of the data object
@@ -730,7 +763,7 @@
zval *tmp;
my_object = sdo_do_get_instance(object TSRMLS_CC);
- zend_hash_clean(my_object->zo.properties);
+ sdo_init_properties_hash(&(my_object->zo));
try {
PropertyList pl = my_object->dop->getInstanceProperties();
@@ -977,7 +1010,7 @@
#if PHP_MAJOR_VERSION > 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1)
zend_object_iterator *sdo_do_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
if (by_ref) {
@@ -1034,27 +1067,36 @@
/* {{{ sdo_do_iterator_current_key
*/
-static int sdo_do_iterator_current_key (zend_object_iterator *iter,
- char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
+static void sdo_do_iterator_current_key (
+ zend_object_iterator *iter, zval *key TSRMLS_DC
+)
+// char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
{
sdo_do_iterator *iterator = (sdo_do_iterator *)iter;
zval *z_do_object = (zval *)iterator->zoi.data;
sdo_do_object *my_object = (sdo_do_object *)sdo_do_get_instance(z_do_object TSRMLS_CC);
- if (!iterator->valid)
- return HASH_KEY_NON_EXISTANT;
+ if (!iterator->valid) {
+// return HASH_KEY_NON_EXISTANT;
+ key = NULL;
+ return;
+ }
try {
const Property& property = my_object->dop->getInstanceProperties()[iterator->index];
+/*
const char *key = property.getName();
*str_key_len = 1 + strlen(key);
*str_key = (char *)emalloc(1 + *str_key_len);
strcpy(*str_key, key);
return HASH_KEY_IS_STRING;
+*/
+ ZVAL_STRING(key, property.getName(), true);
} catch (SDORuntimeException e) {
iterator->valid = false;
sdo_throw_runtimeexception(&e TSRMLS_CC);
- return HASH_KEY_NON_EXISTANT; /* sic */
+// return HASH_KEY_NON_EXISTANT; /* sic */
+ return; /* sic */
}
}
/* }}} */
@@ -1168,8 +1210,8 @@
{
const char *serialized_model;
const char *serialized_graph;
- char *space;
- char *class_name;
+ const char *space;
+ const char *class_name;
/*
* The serialized data comprises the model and the graph, both as null-terminated strings
@@ -1234,13 +1276,13 @@
sdo_do_object_handlers.del_ref = SDO_FUNC_DELREF(do);
sdo_do_object_handlers.clone_obj = sdo_do_clone_obj;
sdo_do_object_handlers.read_dimension = sdo_do_read_dimension;
- sdo_do_object_handlers.read_property = sdo_do_read_dimension;
+ sdo_do_object_handlers.read_property = sdo_do_read_property;
sdo_do_object_handlers.write_dimension = sdo_do_write_dimension;
- sdo_do_object_handlers.write_property = sdo_do_write_dimension;
+ sdo_do_object_handlers.write_property = sdo_do_write_property;
sdo_do_object_handlers.has_dimension = sdo_do_has_dimension;
- sdo_do_object_handlers.has_property = sdo_do_has_dimension;
+ sdo_do_object_handlers.has_property = sdo_do_has_property;
sdo_do_object_handlers.unset_dimension = sdo_do_unset_dimension;
- sdo_do_object_handlers.unset_property = sdo_do_unset_dimension;
+ sdo_do_object_handlers.unset_property = sdo_do_unset_property;
sdo_do_object_handlers.get_properties = sdo_do_get_properties;
sdo_do_object_handlers.compare_objects = sdo_do_compare_objects;
sdo_do_object_handlers.cast_object = sdo_do_cast_object;
@@ -1260,7 +1302,7 @@
*/
PHP_METHOD(SDO_DataObjectImpl, __construct)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
php_error(E_ERROR, "%s%s%s(): internal error - private constructor was called",
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_Exception.cpp
+++ b/SCA_SDO-1.2.4/SDO_Exception.cpp
@@ -51,11 +51,15 @@
z_object.value.obj = zend_objects_new(&object, ce TSRMLS_CC);
z_object.value.obj.handlers = &sdo_exception_object_handlers;
+/*
ALLOC_HASHTABLE(object->properties);
zend_hash_init(object->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(object->properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
-
+*/
+ object_properties_init(object, ce);
zend_update_property_string(exception_class_entry, &z_object,
"file", sizeof("file") - 1, zend_get_executed_filename(TSRMLS_C) TSRMLS_CC);
zend_update_property_long(exception_class_entry, &z_object,
@@ -64,7 +68,7 @@
ALLOC_ZVAL(z_trace);
Z_UNSET_ISREF_P(z_trace);
Z_SET_REFCOUNT_P(z_trace, 0);
- zend_fetch_debug_backtrace(z_trace, 0, 0 TSRMLS_CC);
+ zend_fetch_debug_backtrace(z_trace, 0, 0, 0 TSRMLS_CC);
zend_update_property(exception_class_entry, &z_object,
"trace", sizeof("trace") - 1, z_trace TSRMLS_CC);
@@ -105,7 +109,7 @@
*/
void sdo_exception_new(zval *z_ex, zend_class_entry *ce, const char *message, long code, zval *z_cause TSRMLS_DC)
{
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(z_ex) = IS_OBJECT;
if (object_init_ex(z_ex, ce) == FAILURE) {
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_List.cpp
+++ b/SCA_SDO-1.2.4/SDO_List.cpp
@@ -98,8 +98,7 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_list_object *)object;
- zend_hash_destroy(my_object->zo.properties);
- FREE_HASHTABLE(my_object->zo.properties);
+ sdo_destroy_properties_hash(&(my_object->zo));
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
@@ -125,10 +124,15 @@
memset(my_object, 0, sizeof(sdo_list_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(list), sdo_list_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_list_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -143,7 +147,7 @@
static sdo_list_object *sdo_list_new(zval *me, zend_class_entry *ce TSRMLS_DC)
{
sdo_list_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, ce) == FAILURE) {
@@ -213,7 +217,7 @@
wchar_t wchar_value;
zval *return_value;
DataObjectPtr doh_value;
- char *class_name, *space;
+ const char *class_name, *space;
DataObjectList& dol = *my_object->dolp;
@@ -379,7 +383,7 @@
static void sdo_dataobjectlist_write_value(sdo_list_object *my_object, long index, zval *z_value, sdo_write_type write_type TSRMLS_DC)
{
zval temp_zval;
- char *class_name, *space;
+ const char *class_name, *space;
ZVAL_NULL(&temp_zval);
DataObjectList& dol = *my_object->dolp;
@@ -575,7 +579,7 @@
static int sdo_dataobjectlist_valid(sdo_list_object *my_object, long index, int check_empty TSRMLS_DC)
{
int return_value = 0;
- char *class_name, *space;
+ const char *class_name, *space;
try {
return_value = (index >= 0 && index < my_object->dolp->size());
@@ -699,7 +703,7 @@
long index;
int return_value = 0;
sdo_list_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
if (Z_TYPE_P(offset) != IS_LONG) {
class_name = get_active_class_name(&space TSRMLS_CC);
@@ -739,7 +743,7 @@
long index;
sdo_list_object *my_object;
zval *return_value;
- char *class_name, *space;
+ const char *class_name, *space;
if (Z_TYPE_P(offset) != IS_LONG) {
class_name = get_active_class_name(&space TSRMLS_CC);
@@ -779,7 +783,7 @@
long index;
sdo_list_object *my_object;
DataObjectList *dol;
- char *class_name, *space;
+ const char *class_name, *space;
if (Z_TYPE_P(offset) != IS_LONG) {
class_name = get_active_class_name(&space TSRMLS_CC);
@@ -828,7 +832,7 @@
long index = -1;
sdo_list_object *my_object;
sdo_write_type write_type;
- char *class_name, *space;
+ const char *class_name, *space;
if (Z_TYPE_P(z_value) == IS_NULL) {
/* TODO: fix this when the C++ lib supports a NULL property */
@@ -882,10 +886,10 @@
sdo_list_object *my_object;
int entries;
zval *tmp;
- char *space, *class_name;
+ const char *space, *class_name;
my_object = sdo_list_get_instance(object TSRMLS_CC);
- zend_hash_clean(my_object->zo.properties);
+ sdo_init_properties_hash(&(my_object->zo));
try {
switch (my_object->list_type) {
@@ -945,7 +949,7 @@
zval free_obj;
int rc = SUCCESS;
int entries;
- char *class_name, *space;
+ const char *class_name, *space;
if (should_free) {
free_obj = *writeobj;
@@ -1057,7 +1061,7 @@
DataObjectList *dol1, *dol2;
int entries;
zval result;
- char *class_name, *space;
+ const char *class_name, *space;
INIT_PZVAL(&result);
@@ -1110,7 +1114,7 @@
#if PHP_MAJOR_VERSION > 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1)
zend_object_iterator *sdo_list_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
if (by_ref) {
@@ -1153,7 +1157,7 @@
{
int valid;
long count;
- char *class_name, *space;
+ const char *class_name, *space;
sdo_list_iterator *iterator = (sdo_list_iterator *)iter;
zval *z_list_object = (zval *)iterator->zoi.data;
@@ -1186,13 +1190,17 @@
/* {{{ sdo_list_iterator_current_key
*/
-static int sdo_list_iterator_current_key (zend_object_iterator *iter,
- char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
+static void sdo_list_iterator_current_key (
+ zend_object_iterator *iter, zval *key TSRMLS_DC
+)
+// char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
{
sdo_list_iterator *iterator = (sdo_list_iterator *)iter;
- *int_key = iterator->index;
+// *int_key = iterator->index;
+ ZVAL_LONG(key, iterator->index);
- return HASH_KEY_IS_LONG;
+// return HASH_KEY_IS_LONG;
+ return;
}
/* }}} */
@@ -1200,7 +1208,7 @@
*/
static void sdo_list_iterator_current_data (zend_object_iterator *iter, zval ***data TSRMLS_DC)
{
- char *class_name, *space;
+ const char *class_name, *space;
sdo_list_iterator *iterator = (sdo_list_iterator *)iter;
zval *z_list_object = (zval *)iterator->zoi.data;
@@ -1254,7 +1262,7 @@
int sdo_list_count_elements(zval *object, long *count TSRMLS_DC)
{
sdo_list_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
my_object = sdo_list_get_instance(object TSRMLS_CC);
@@ -1320,7 +1328,7 @@
*/
PHP_METHOD(SDO_List, __construct)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
php_error(E_ERROR, "%s%s%s(): internal error - private constructor was called",
@@ -1348,7 +1356,7 @@
long index = -1;
sdo_list_object *my_object;
sdo_write_type write_type;
- char *class_name, *space;
+ const char *class_name, *space;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|z", &z_value, &z_index) == FAILURE) {
return;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_Model_Property.cpp
+++ b/SCA_SDO-1.2.4/SDO_Model_Property.cpp
@@ -79,8 +79,10 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_model_property_object *)object;
+/*
zend_hash_destroy(my_object->zo.properties);
FREE_HASHTABLE(my_object->zo.properties);
+*/
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
@@ -104,10 +106,15 @@
memset(my_object, 0, sizeof(sdo_model_property_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(model_property), sdo_model_property_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_model_property_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -121,7 +128,7 @@
void sdo_model_property_new(zval *me, const Property *propertyp TSRMLS_DC)
{
sdo_model_property_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, sdo_model_propertyimpl_class_entry) == FAILURE) {
@@ -146,7 +153,7 @@
char *bytes_value;
char char_value;
wchar_t wchar_value;
- char *class_name, *space;
+ const char *class_name, *space;
try {
switch(propertyp->getTypeEnum()) {
@@ -407,7 +414,7 @@
*/
PHP_METHOD(SDO_Model_PropertyImpl, __construct)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
php_error(E_ERROR, "%s%s%s(): internal error - private constructor was called",
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_Model_ReflectionDataObject.cpp
+++ b/SCA_SDO-1.2.4/SDO_Model_ReflectionDataObject.cpp
@@ -69,8 +69,10 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_model_rdo_object *)object;
+/*
zend_hash_destroy(my_object->zo.properties);
FREE_HASHTABLE(my_object->zo.properties);
+*/
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
@@ -94,10 +96,15 @@
memset(my_object, 0, sizeof(sdo_model_rdo_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(model_rdo), sdo_model_rdo_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_model_rdo_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -198,7 +205,7 @@
void sdo_model_rdo_minit(zend_class_entry *tmp_ce TSRMLS_DC)
{
zend_class_entry **reflector_ce_ptr;
- char *class_name, *space;
+ const char *class_name, *space;
tmp_ce->create_object = sdo_model_rdo_object_create;
if (zend_hash_find(CG(class_table), "reflector", sizeof("reflector"), (void **)&reflector_ce_ptr) == FAILURE) {
@@ -226,7 +233,7 @@
int argc;
zval *z_do;
sdo_model_rdo_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
if ((argc = ZEND_NUM_ARGS()) != 1) {
WRONG_PARAM_COUNT;
@@ -268,7 +275,7 @@
{
zend_class_entry *reflection_ce;
zend_function *reflection_export_zf;
- char *class_name, *space;
+ const char *class_name, *space;
/* Just call up to Reflection::export */
reflection_ce = zend_fetch_class ("Reflection", strlen("Reflection"),
@@ -280,7 +287,7 @@
return;
}
- reflection_export_zf = zend_std_get_static_method(reflection_ce, "export", strlen("export") TSRMLS_CC);
+ reflection_export_zf = zend_std_get_static_method(reflection_ce, "export", strlen("export"), NULL TSRMLS_CC);
if (!reflection_export_zf) {
class_name = get_active_class_name(&space TSRMLS_CC);
php_error(E_ERROR, "%s%s%s(): internal error (%i) - could not call Reflection::export method",
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_Model_Type.cpp
+++ b/SCA_SDO-1.2.4/SDO_Model_Type.cpp
@@ -69,8 +69,10 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_model_type_object *)object;
+/*
zend_hash_destroy(my_object->zo.properties);
FREE_HASHTABLE(my_object->zo.properties);
+*/
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
@@ -95,10 +97,15 @@
memset(my_object, 0, sizeof(sdo_model_type_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(model_type), sdo_model_type_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_model_type_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -112,7 +119,7 @@
void sdo_model_type_new(zval *me, const Type *typep TSRMLS_DC)
{
sdo_model_type_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, sdo_model_typeimpl_class_entry) == FAILURE) {
@@ -290,7 +297,7 @@
*/
PHP_METHOD(SDO_Model_TypeImpl, __construct)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
php_error(E_ERROR, "%s%s%s(): internal error - private constructor was called",
@@ -342,7 +349,7 @@
sdo_model_type_object *my_object;
zval *z_do;
int argc;
- char *class_name, *space;
+ const char *class_name, *space;
if ((argc = ZEND_NUM_ARGS()) != 1) {
WRONG_PARAM_COUNT;
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/SDO_Sequence.cpp
+++ b/SCA_SDO-1.2.4/SDO_Sequence.cpp
@@ -69,7 +69,7 @@
static int sdo_sequence_valid(sdo_seq_object *my_object, long sequence_index, int check_empty TSRMLS_DC)
{
int return_value = 0;
- char *class_name, *space;
+ const char *class_name, *space;
try {
Sequence& seq = *my_object->seqp;
@@ -146,7 +146,7 @@
wchar_t wchar_value;
DataObjectPtr doh_value;
zval *return_value;
- char *class_name, *space;
+ const char *class_name, *space;
ALLOC_INIT_ZVAL(return_value);
Z_SET_REFCOUNT_P(return_value, 0);
@@ -248,7 +248,7 @@
static void sdo_sequence_write_value(sdo_seq_object *my_object, char *xpath, long sequence_index, Type::Types type_enum, zval *z_value, sdo_write_type write_type TSRMLS_DC)
{
zval temp_zval;
- char *class_name, *space;
+ const char *class_name, *space;
ZVAL_NULL(&temp_zval);
try {
@@ -568,7 +568,7 @@
zval *tmp;
my_object = sdo_sequence_get_instance(object TSRMLS_CC);
- zend_hash_clean(my_object->zo.properties);
+ sdo_init_properties_hash(&(my_object->zo));
try {
entries = my_object->seqp->size();
@@ -668,7 +668,7 @@
#if PHP_MAJOR_VERSION > 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION > 1)
zend_object_iterator *sdo_sequence_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC)
{
- char *class_name, *space;
+ const char *class_name, *space;
class_name = get_active_class_name(&space TSRMLS_CC);
if (by_ref) {
@@ -727,13 +727,15 @@
/* {{{ sdo_sequence_iterator_current_key
*/
-static int sdo_sequence_iterator_current_key (zend_object_iterator *iter,
- char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
+static void sdo_sequence_iterator_current_key (zend_object_iterator *iter, zval* key TSRMLS_DC)
+// char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
{
sdo_seq_iterator *iterator = (sdo_seq_iterator *)iter;
- *int_key = iterator->index;
+// *int_key = iterator->index;
+ ZVAL_LONG(key, iterator->index);
- return HASH_KEY_IS_LONG;
+// return HASH_KEY_IS_LONG;
+ return;
}
/* }}} */
@@ -806,8 +808,7 @@
SDO_DEBUG_FREE(object);
my_object = (sdo_seq_object *)object;
- zend_hash_destroy(my_object->zo.properties);
- FREE_HASHTABLE(my_object->zo.properties);
+ sdo_destroy_properties_hash(&(my_object->zo));
if (my_object->zo.guards) {
zend_hash_destroy(my_object->zo.guards);
@@ -832,10 +833,15 @@
memset(my_object, 0, sizeof(sdo_seq_object));
my_object->zo.ce = ce;
my_object->zo.guards = NULL;
+/*
ALLOC_HASHTABLE(my_object->zo.properties);
zend_hash_init(my_object->zo.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+*/
+/*
zend_hash_copy(my_object->zo.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref,
(void *)&tmp, sizeof(zval *));
+*/
+ object_properties_init(&(my_object->zo), ce);
retval.handle = zend_objects_store_put(my_object, SDO_FUNC_DESTROY(sequence), sdo_sequence_object_free_storage, NULL TSRMLS_CC);
retval.handlers = &sdo_sequence_object_handlers;
SDO_DEBUG_ALLOCATE(retval.handle, my_object);
@@ -849,7 +855,7 @@
void sdo_sequence_new(zval *me, SequencePtr seqp TSRMLS_DC)
{
sdo_seq_object *my_object;
- char *class_name, *space;
+ const char *class_name, *space;
Z_TYPE_P(me) = IS_OBJECT;
if (object_init_ex(me, sdo_sequenceimpl_class_entry) == FAILURE) {
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/php_sdo_int.h
+++ b/SCA_SDO-1.2.4/php_sdo_int.h
@@ -125,12 +125,14 @@
extern PHP_SDO_API zval *sdo_throw_exception_ex(zend_class_entry *ce, long code, zval *z_cause TSRMLS_DC, char *format, ...);
extern PHP_SDO_API void sdo_exception_minit(zend_class_entry *tmp TSRMLS_DC);
extern PHP_SDO_API void sdo_exception_new(zval *me, zend_class_entry *ce, const char *message, long code, zval *cause TSRMLS_DC);
-extern PHP_SDO_API function_entry *sdo_exception_get_methods();
+extern PHP_SDO_API zend_function_entry *sdo_exception_get_methods();
extern PHP_SDO_API zval *sdo_throw_runtimeexception(SDORuntimeException *e TSRMLS_DC);
extern PHP_SDO_API void sdo_cppexception_minit(zend_class_entry *tmp TSRMLS_DC);
extern PHP_SDO_API void sdo_cppexception_new(zval *me, SDORuntimeException *cpp_exception TSRMLS_DC);
extern PHP_SDO_API void sdo_make_long_class_constant(zend_class_entry *ce, char *name, long value);
+void sdo_init_properties_hash(zend_object *zo_ptr);
+void sdo_destroy_properties_hash(zend_object *zo_ptr);
extern PHP_SDO_API int sdo_parse_offset_param(DataObjectPtr dop, zval *z_offset,
const Property **return_property, const char **return_xpath, int property_required, int quiet TSRMLS_DC);
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/sdo.cpp
+++ b/SCA_SDO-1.2.4/sdo.cpp
@@ -92,7 +92,7 @@
ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO();
-function_entry sdo_propertyaccess_methods[] = {
+zend_function_entry sdo_propertyaccess_methods[] = {
ZEND_ABSTRACT_ME(SDO_PropertyAccess, __get, arginfo___get)
ZEND_ABSTRACT_ME(SDO_PropertyAccess, __set, arginfo___set)
{NULL, NULL, NULL}
@@ -104,7 +104,7 @@
ZEND_ARG_INFO(0, identifier)
ZEND_END_ARG_INFO();
-function_entry sdo_dataobject_methods[] = {
+zend_function_entry sdo_dataobject_methods[] = {
ZEND_ABSTRACT_ME(SDO_DataObject, getTypeName, 0)
ZEND_ABSTRACT_ME(SDO_DataObject, getTypeNamespaceURI, 0)
ZEND_ABSTRACT_ME(SDO_DataObject, getSequence, 0)
@@ -131,7 +131,7 @@
ZEND_ARG_INFO(0, property_identifier)
ZEND_END_ARG_INFO();
-function_entry sdo_sequence_methods[] = {
+zend_function_entry sdo_sequence_methods[] = {
ZEND_ABSTRACT_ME(SDO_Sequence, getProperty, arginfo_sdo_sequence_getproperty)
ZEND_ABSTRACT_ME(SDO_Sequence, move, arginfo_sdo_sequence_move)
ZEND_ABSTRACT_ME(SDO_Sequence, insert, arginfo_sdo_sequence_insert)
@@ -146,7 +146,7 @@
ZEND_ARG_INFO(0, index)
ZEND_END_ARG_INFO();
-function_entry sdo_list_methods[] = {
+zend_function_entry sdo_list_methods[] = {
ZEND_ME(SDO_List, __construct, 0, ZEND_ACC_PRIVATE)
ZEND_ME(SDO_List, insert, arginfo_sdo_list_insert, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_List, count, 0, ZEND_ACC_PUBLIC)
@@ -160,14 +160,14 @@
ZEND_ARG_INFO(0, type_name)
ZEND_END_ARG_INFO();
-function_entry sdo_datafactory_methods[] = {
+zend_function_entry sdo_datafactory_methods[] = {
ZEND_ABSTRACT_ME(SDO_DataFactory, create, arginfo_sdo_datafactory_create)
{NULL, NULL, NULL}
};
/* }}} */
/* {{{ SDO_DAS_DataObject methods */
-function_entry sdo_das_dataobject_methods[] = {
+zend_function_entry sdo_das_dataobject_methods[] = {
ZEND_ABSTRACT_ME(SDO_DAS_DataObject, getChangeSummary, 0)
{NULL, NULL, NULL}
};
@@ -189,7 +189,7 @@
ZEND_ARG_INFO(0, options)
ZEND_END_ARG_INFO();
-function_entry sdo_das_datafactory_methods[] = {
+zend_function_entry sdo_das_datafactory_methods[] = {
ZEND_ME(SDO_DAS_DataFactory, getDataFactory, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
ZEND_ABSTRACT_ME(SDO_DAS_DataFactory, addType, arginfo_sdo_das_datafactory_addType)
ZEND_ABSTRACT_ME(SDO_DAS_DataFactory, addPropertyToType, arginfo_sdo_das_datafactory_addPropertyToType)
@@ -198,7 +198,7 @@
/* }}} */
/* {{{SDO_DAS_ChangeSummary methods */
-function_entry sdo_das_changesummary_methods[] = {
+zend_function_entry sdo_das_changesummary_methods[] = {
ZEND_ME(SDO_DAS_ChangeSummary, beginLogging, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_ChangeSummary, endLogging, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_ChangeSummary, isLogging, 0, ZEND_ACC_PUBLIC)
@@ -211,7 +211,7 @@
/* }}} */
/* {{{ SDO_DASSetting methods */
-function_entry sdo_das_setting_methods[] = {
+zend_function_entry sdo_das_setting_methods[] = {
ZEND_ME(SDO_DAS_Setting, getPropertyIndex, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_Setting, getPropertyName, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_Setting, getValue, 0, ZEND_ACC_PUBLIC)
@@ -222,7 +222,7 @@
/* }}} */
/* {{{ SDO_DAS_DataFactoryImpl methods */
-function_entry sdo_das_df_methods[] = {
+zend_function_entry sdo_das_df_methods[] = {
ZEND_ME(SDO_DAS_DataFactoryImpl, create, arginfo_sdo_datafactory_create, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_DataFactoryImpl, addType, arginfo_sdo_das_datafactory_addType, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DAS_DataFactoryImpl, addPropertyToType, arginfo_sdo_das_datafactory_addPropertyToType, ZEND_ACC_PUBLIC)
@@ -231,7 +231,7 @@
/* }}} */
/* {{{ SDO_DataObjectImpl methods */
-function_entry sdo_dataobjectimpl_methods[] = {
+zend_function_entry sdo_dataobjectimpl_methods[] = {
ZEND_ME(SDO_DataObjectImpl, __construct, 0, ZEND_ACC_PRIVATE) /* can't be newed */
ZEND_ME(SDO_DataObjectImpl, __get, arginfo___get, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_DataObjectImpl, __set, arginfo___set, ZEND_ACC_PUBLIC)
@@ -250,7 +250,7 @@
/* }}} */
/* {{{ SDO_SequenceImpl methods */
-function_entry sdo_sequenceimpl_methods[] = {
+zend_function_entry sdo_sequenceimpl_methods[] = {
ZEND_ME(SDO_SequenceImpl, getProperty, arginfo_sdo_sequence_getproperty, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_SequenceImpl, move, arginfo_sdo_sequence_move, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_SequenceImpl, insert, arginfo_sdo_sequence_insert, ZEND_ACC_PUBLIC)
@@ -264,7 +264,7 @@
ZEND_ARG_INFO(0, identifier)
ZEND_END_ARG_INFO();
-function_entry sdo_model_type_methods[] = {
+zend_function_entry sdo_model_type_methods[] = {
ZEND_ABSTRACT_ME(SDO_Model_Type, getName, 0)
ZEND_ABSTRACT_ME(SDO_Model_Type, getNamespaceURI, 0)
ZEND_ABSTRACT_ME(SDO_Model_Type, isInstance, arginfo_sdo_dataobject)
@@ -278,7 +278,7 @@
{NULL, NULL, NULL}
};
-function_entry sdo_model_typeimpl_methods[] = {
+zend_function_entry sdo_model_typeimpl_methods[] = {
ZEND_ME(SDO_Model_TypeImpl, __construct, 0, ZEND_ACC_PRIVATE) /* can't be newed */
ZEND_ME(SDO_Model_TypeImpl, getName, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_Model_TypeImpl, getNamespaceURI, 0, ZEND_ACC_PUBLIC)
@@ -295,7 +295,7 @@
/* }}} */
/* {{{ SDO_Model_Property methods */
-function_entry sdo_model_property_methods[] = {
+zend_function_entry sdo_model_property_methods[] = {
ZEND_ABSTRACT_ME(SDO_Model_Property, getName, 0)
ZEND_ABSTRACT_ME(SDO_Model_Property, getType, 0)
ZEND_ABSTRACT_ME(SDO_Model_Property, isMany, 0)
@@ -307,7 +307,7 @@
{NULL, NULL, NULL}
};
-function_entry sdo_model_propertyimpl_methods[] = {
+zend_function_entry sdo_model_propertyimpl_methods[] = {
ZEND_ME(SDO_Model_PropertyImpl, __construct, 0, ZEND_ACC_PRIVATE) /* can't be newed */
ZEND_ME(SDO_Model_PropertyImpl, getName, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_Model_PropertyImpl, getType, 0, ZEND_ACC_PUBLIC)
@@ -327,7 +327,7 @@
ZEND_ARG_INFO(0, return_output)
ZEND_END_ARG_INFO();
-function_entry sdo_model_reflectiondataobject_methods[] = {
+zend_function_entry sdo_model_reflectiondataobject_methods[] = {
ZEND_ME(SDO_Model_ReflectionDataObject, __construct, arginfo_sdo_dataobject, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_Model_ReflectionDataObject, __toString, 0, ZEND_ACC_PUBLIC)
/* ZEND_ME(SDO_Model_ReflectionDataObject, export, arginfo_sdo_model_reflectiondataobject_export, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC) */
@@ -349,14 +349,14 @@
/* }}} */
/* {{{ SDO_Exception methods */
-function_entry sdo_exception_methods[] = {
+zend_function_entry sdo_exception_methods[] = {
ZEND_ME(SDO_Exception, getCause, 0, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
/* }}} */
/* {{{ SDO_CPPException methods */
-function_entry sdo_cppexception_methods[] = {
+zend_function_entry sdo_cppexception_methods[] = {
ZEND_ME(SDO_CPPException, getClass, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_CPPException, getFile, 0, ZEND_ACC_PUBLIC)
ZEND_ME(SDO_CPPException, getLine, 0, ZEND_ACC_PUBLIC)
@@ -370,7 +370,7 @@
/* {{{ sdo_exception_get_methods
*/
-PHP_SDO_API function_entry *sdo_exception_get_methods()
+PHP_SDO_API zend_function_entry *sdo_exception_get_methods()
{
return sdo_exception_methods;
}
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/sdo_utils.cpp
+++ b/SCA_SDO-1.2.4/sdo_utils.cpp
@@ -48,6 +48,23 @@
}
/* }}} */
+void sdo_init_properties_hash(zend_object *zo_ptr) {
+ if (!zo_ptr->properties) {
+ ALLOC_HASHTABLE(zo_ptr->properties);
+ zend_hash_init(zo_ptr->properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+ }
+ else {
+ zend_hash_clean(zo_ptr->properties);
+ }
+}
+
+void sdo_destroy_properties_hash(zend_object *zo_ptr) {
+ if (zo_ptr->properties) {
+ zend_hash_destroy(zo_ptr->properties);
+ FREE_HASHTABLE(zo_ptr->properties);
+ }
+}
+
/* {{{ sdo_parse_offset_param
* internal function to get an sdo property offset from a zval parameter.
* The value may have been passed as a SDO_Model_Property, an xpath or a property index.
@@ -61,8 +78,8 @@
long prop_index;
const Property *property_p;
const char *xpath;
- char *class_name;
- char *space;
+ const char *class_name;
+ const char *space;
if (!z_offset) {
only in patch2:
unchanged:
--- a/SCA_SDO-1.2.4/tests/SDO/phpt/bug9243.phpt
+++ b/SCA_SDO-1.2.4/tests/SDO/phpt/bug9243.phpt
@@ -7,17 +7,26 @@
if (!extension_loaded('sdo'))
print 'skip - sdo extension not loaded';
- else if (@fopen('http://ping.chip.org/phr/xml/insurance.xsd', 'r') === false)
- print 'skip - remote schema is unreachable';
+ else
+ if (
+ @fopen(
+ 'http://examples.oreilly.com/9780596002527/examples/first.xsd', 'r'
+ ) === false
+ ) print 'skip - remote schema is unreachable'
+ ;
?>
--FILE--
<?php
try {
- $xmldas = SDO_DAS_XML::create('http://ping.chip.org/phr/xml/insurance.xsd');
+ $xmldas = (
+ SDO_DAS_XML::create(
+ 'http://examples.oreilly.com/9780596002527/examples/first.xsd'
+ )
+ );
} catch (SDO_Exception $e) {
print('Problem creating an XML document: ' . $e->getMessage());
}
?>
---EXPECT--
\ No newline at end of file
+--EXPECT--
|