]> granicus.if.org Git - php/commitdiff
unicode enable COM parameters (but not method/property names yet)
authorWez Furlong <wez@php.net>
Sat, 13 Aug 2005 19:03:58 +0000 (19:03 +0000)
committerWez Furlong <wez@php.net>
Sat, 13 Aug 2005 19:03:58 +0000 (19:03 +0000)
ext/com_dotnet/com_handlers.c
ext/com_dotnet/com_variant.c

index 1564924125d001ab298f456f22a23319e7cd2bbe..c53c11808af0703ad53b2361f72c2ba9ecb9ccd4 100644 (file)
@@ -522,6 +522,7 @@ static int com_object_cast(zval *readobj, zval *writeobj, int type, int should_f
                        vt = VT_BOOL;
                        break;
                case IS_STRING:
+               case IS_UNICODE:
                        vt = VT_BSTR;
                        break;
                default:
index 6030ae915a509f00f2c0f2da55353543418e88cf..7c3ea12c5a0a79f4f13ad8a251817be1e4c6d685 100644 (file)
@@ -157,6 +157,11 @@ PHPAPI void php_com_variant_from_zval(VARIANT *v, zval *z, int codepage TSRMLS_D
                        efree(olestring);
                        break;
 
+               case IS_UNICODE:
+                       V_VT(v) = VT_BSTR;
+                       V_BSTR(v) = SysAllocString(Z_USTRVAL_P(z));
+                       break;
+
                case IS_RESOURCE:
                case IS_CONSTANT:
                case IS_CONSTANT_ARRAY:
@@ -211,12 +216,8 @@ PHPAPI int php_com_zval_from_variant(zval *z, VARIANT *v, int codepage TSRMLS_DC
                        ZVAL_BOOL(z, V_BOOL(v) ? 1 : 0);
                        break;
                case VT_BSTR:
-                       olestring = V_BSTR(v);
-                       if (olestring) {
-                               Z_TYPE_P(z) = IS_STRING;
-                               Z_STRVAL_P(z) = php_com_olestring_to_string(olestring,
-                                       &Z_STRLEN_P(z), codepage TSRMLS_CC);
-                               olestring = NULL;
+                       if (V_BSTR(v)) {
+                               ZVAL_UNICODE(z, V_BSTR(v), 1);
                        }
                        break;
                case VT_UNKNOWN: