php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login

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--
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Apr 24 14:01:30 2024 UTC