diff options
| author | Dmitry Stogov <dmitry@php.net> | 2005-11-08 08:30:19 +0000 | 
|---|---|---|
| committer | Dmitry Stogov <dmitry@php.net> | 2005-11-08 08:30:19 +0000 | 
| commit | 270640283e4bceee208b09a843c02b2e79b71e07 (patch) | |
| tree | 99229db27f7a0d3dcfe72112ab664aeb3240f3b3 /ext/soap/php_schema.c | |
| parent | 9c14ce94f300a14a971dd10322234a23ce85ef64 (diff) | |
| download | php-git-270640283e4bceee208b09a843c02b2e79b71e07.tar.gz | |
Fixed bug #35142 (SOAP Client/Server Complex Object Support)
Diffstat (limited to 'ext/soap/php_schema.c')
| -rw-r--r-- | ext/soap/php_schema.c | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/ext/soap/php_schema.c b/ext/soap/php_schema.c index d6183ffc93..565a7fb46b 100644 --- a/ext/soap/php_schema.c +++ b/ext/soap/php_schema.c @@ -2192,9 +2192,25 @@ static void schema_content_model_fixup(sdlCtx *ctx, sdlContentModelPtr model)  			}  			break;  		} -		case XSD_CONTENT_SEQUENCE: -		case XSD_CONTENT_ALL:  		case XSD_CONTENT_CHOICE: { +			if (model->max_occurs != 1) { +				HashPosition pos; +				sdlContentModelPtr *tmp; + +				zend_hash_internal_pointer_reset_ex(model->u.content, &pos); +				while (zend_hash_get_current_data_ex(model->u.content, (void**)&tmp, &pos) == SUCCESS) { +					(*tmp)->min_occurs = 0; +					(*tmp)->max_occurs = model->max_occurs; +					zend_hash_move_forward_ex(model->u.content, &pos); +				} + +				model->kind = XSD_CONTENT_ALL; +				model->min_occurs = 1; +				model->max_occurs = 1; +			} +		} +		case XSD_CONTENT_SEQUENCE: +		case XSD_CONTENT_ALL: {  			sdlContentModelPtr *tmp;  			zend_hash_internal_pointer_reset(model->u.content); | 
