mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
com_*() functions returned an oo-resource instead of an resource id,
thus subsequent com_*() calls to com-returnvalues failed.
This commit is contained in:
parent
d4b86e1c5b
commit
9a6fe9631e
4 changed files with 40 additions and 18 deletions
|
@ -804,9 +804,8 @@ PHP_FUNCTION(com_invoke)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
php_variant_to_pval(var_result, return_value, codepage TSRMLS_CC);
|
RETVAL_VARIANT(var_result);
|
||||||
|
|
||||||
FREE_VARIANT(var_result);
|
|
||||||
efree(arguments);
|
efree(arguments);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
@ -1049,9 +1048,7 @@ PHP_FUNCTION(com_propget)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
php_variant_to_pval(var_result, return_value, codepage TSRMLS_CC);
|
RETVAL_VARIANT(var_result);
|
||||||
|
|
||||||
FREE_VARIANT(var_result);
|
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
@ -1201,8 +1198,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
|
||||||
pval_destructor(&overloaded_property->element);
|
pval_destructor(&overloaded_property->element);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj_prop != NULL)
|
if (obj_prop != NULL) {
|
||||||
{
|
|
||||||
RETVAL_COM(obj);
|
RETVAL_COM(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,21 @@
|
||||||
|
|
||||||
#define IS_VARIANT php_VARIANT_get_le_variant()
|
#define IS_VARIANT php_VARIANT_get_le_variant()
|
||||||
|
|
||||||
|
#define ZVAL_VARIANT(z, v) if (V_VT(v) == VT_DISPATCH) { \
|
||||||
|
comval *obj; \
|
||||||
|
ALLOC_COM(obj); \
|
||||||
|
php_COM_set(obj, &V_DISPATCH(v), TRUE TSRMLS_CC); \
|
||||||
|
ZVAL_LONG((z), zend_list_insert(obj, IS_COM)); \
|
||||||
|
} else { \
|
||||||
|
php_variant_to_pval((v), (z), codepage TSRMLS_CC); \
|
||||||
|
FREE_VARIANT(v); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RETVAL_VARIANT(v) ZVAL_VARIANT(return_value, (v));
|
||||||
|
#define RETURN_VARIANT(v) RETVAL_VARIANT(v) \
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
#endif /* PHP_WIN32 */
|
#endif /* PHP_WIN32 */
|
||||||
|
|
||||||
#endif /* VARIANT_H */
|
#endif /* VARIANT_H */
|
||||||
|
|
|
@ -804,9 +804,8 @@ PHP_FUNCTION(com_invoke)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
php_variant_to_pval(var_result, return_value, codepage TSRMLS_CC);
|
RETVAL_VARIANT(var_result);
|
||||||
|
|
||||||
FREE_VARIANT(var_result);
|
|
||||||
efree(arguments);
|
efree(arguments);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
@ -1049,9 +1048,7 @@ PHP_FUNCTION(com_propget)
|
||||||
RETURN_FALSE;
|
RETURN_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
php_variant_to_pval(var_result, return_value, codepage TSRMLS_CC);
|
RETVAL_VARIANT(var_result);
|
||||||
|
|
||||||
FREE_VARIANT(var_result);
|
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
@ -1201,8 +1198,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
|
||||||
pval_destructor(&overloaded_property->element);
|
pval_destructor(&overloaded_property->element);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj_prop != NULL)
|
if (obj_prop != NULL) {
|
||||||
{
|
|
||||||
RETVAL_COM(obj);
|
RETVAL_COM(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,21 @@
|
||||||
|
|
||||||
#define IS_VARIANT php_VARIANT_get_le_variant()
|
#define IS_VARIANT php_VARIANT_get_le_variant()
|
||||||
|
|
||||||
|
#define ZVAL_VARIANT(z, v) if (V_VT(v) == VT_DISPATCH) { \
|
||||||
|
comval *obj; \
|
||||||
|
ALLOC_COM(obj); \
|
||||||
|
php_COM_set(obj, &V_DISPATCH(v), TRUE TSRMLS_CC); \
|
||||||
|
ZVAL_LONG((z), zend_list_insert(obj, IS_COM)); \
|
||||||
|
} else { \
|
||||||
|
php_variant_to_pval((v), (z), codepage TSRMLS_CC); \
|
||||||
|
FREE_VARIANT(v); \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RETVAL_VARIANT(v) ZVAL_VARIANT(return_value, (v));
|
||||||
|
#define RETURN_VARIANT(v) RETVAL_VARIANT(v) \
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
#endif /* PHP_WIN32 */
|
#endif /* PHP_WIN32 */
|
||||||
|
|
||||||
#endif /* VARIANT_H */
|
#endif /* VARIANT_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue