diff options
Diffstat (limited to 'ext/rpc/com/variant.c')
| -rw-r--r-- | ext/rpc/com/variant.c | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/ext/rpc/com/variant.c b/ext/rpc/com/variant.c index ca7bdb4834..0f8c7287dc 100644 --- a/ext/rpc/com/variant.c +++ b/ext/rpc/com/variant.c @@ -73,6 +73,7 @@ PHP_MINIT_FUNCTION(VARIANT)  	REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, 0);  	REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, 0);  	REGISTER_LONG_CONSTANT("VT_I2", VT_I2, 0); +	REGISTER_LONG_CONSTANT("VT_I4", VT_I4, 0);  	REGISTER_LONG_CONSTANT("VT_R4", VT_R4, 0);  	REGISTER_LONG_CONSTANT("VT_R8", VT_R8, 0);  	REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, 0); @@ -181,22 +182,22 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc  	zend_hash_index_find(object->value.obj.properties, 0, (void **) &var_handle);  	var_arg = zend_list_find((*var_handle)->value.lval, &type); -	if (!var_arg || (type != le_variant)) +	if (!var_arg || (type != le_variant)) {  		var_reset(&result); -	else -	{ +	} else 	{  		overloaded_property = (zend_overloaded_element *) property_reference->elements_list->head->data; -		switch (overloaded_property->type) -		{ +		switch (overloaded_property->type) {  			case OE_IS_ARRAY:  				var_reset(&result);  				break;  			case OE_IS_OBJECT: -				if(!strcmp(overloaded_property->element.value.str.val, "value")) +				if(!strcmp(overloaded_property->element.value.str.val, "value")) {  					php_variant_to_pval(var_arg, &result, 0, codepage); -				else -				{ +				} else if(!strcmp(overloaded_property->element.value.str.val, "type")) { +					result.value.lval = var_arg->vt; +					result.type = IS_LONG; +				} else {  					var_reset(&result);  					php_error(E_WARNING, "Unknown member.");  				}  | 
