]> granicus.if.org Git - php/commitdiff
removed CONST_EFREE_PERSISTENT so that andi can commit his patch
authorHarald Radi <phanto@php.net>
Fri, 21 Jun 2002 10:35:33 +0000 (10:35 +0000)
committerHarald Radi <phanto@php.net>
Fri, 21 Jun 2002 10:35:33 +0000 (10:35 +0000)
# second try

ext/com/COM.c

index cbf9594e1c82ce36b0b60d7c0d82efc8545fbf59..cb315d35bc192d184c39250b8a6e69aa108475f2 100644 (file)
@@ -2194,7 +2194,7 @@ PHPAPI int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
                        while (SUCCEEDED(TypeInfo->lpVtbl->GetVarDesc(TypeInfo, j, &pVarDesc))) {
                                BSTR bstr_ids;
                                zend_constant c;
-                               zval exists, results;
+                               zval exists, results, value;
                                char *const_name;
 
                                TypeInfo->lpVtbl->GetNames(TypeInfo, pVarDesc->memid, &bstr_ids, 1, &NameCount);
@@ -2220,10 +2220,17 @@ PHPAPI int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
                                        continue;
                                }
 
-                               php_variant_to_pval(pVarDesc->lpvarValue, &c.value, codepage TSRMLS_CC);
-                               c.flags = mode;
+                               php_variant_to_pval(pVarDesc->lpvarValue, &value, codepage TSRMLS_CC);
+                                /* we only import enumerations (=int) */
+                               if (value.type == IS_LONG) {
+                                       c.flags = mode;
+                                       c.value.type = IS_LONG;
+                                       c.value.value.lval = value.value.lval;
+                                       c.module_number = 0; /* the module number is not available here */
 
-                               zend_register_constant(&c TSRMLS_CC);
+                                       zend_register_constant(&c TSRMLS_CC);
+                               }
+                               efree(value);
 
                                j++;
                        }