switch (Z_TYPE_P(overloaded_property)) {
case OE_IS_ARRAY:
if (do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE) {
- pval_destructor(&overloaded_property->element);
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
case OE_IS_OBJECT:
if (do_COM_propget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE) {
- pval_destructor(&overloaded_property->element);
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
break;
case OE_IS_METHOD:
- pval_destructor(&overloaded_property->element);
FREE_VARIANT(var_result);
if (obj != obj_prop) {
return return_value;
}
- pval_destructor(&overloaded_property->element);
+ if (obj == obj_prop) {
+ // not head
+ pval_destructor(&overloaded_property->element);
+ }
if (V_VT(var_result) == VT_DISPATCH) {
if (V_DISPATCH(var_result) == NULL) {