Ops. :)

Thank you for catching the bug.
I've committed fixed version.

Thanks. Dmitry.

> -----Original Message-----
> From: Michael Wallner [mailto:[EMAIL PROTECTED] 
> Sent: Monday, February 13, 2006 4:10 PM
> To: Dmitry Stogov
> Cc: php-cvs@lists.php.net; internals@lists.php.net
> Subject: [PHP-DEV] Re: cvs: php-src /ext/com_dotnet 
> com_misc.c /ext/dom attr.c cdatasection.ccharacterdata.c 
> comment.c document.c documentfragment.c dom_iterators.c 
> domexception.cdomimplementation.c element.c entityreference.c 
> namednodemap.c node.c nodelist.cphp_
> 
> 
> Dmitry Stogov wrote:
> > dmitry              Mon Feb 13 10:24:00 2006 UTC
> 
> > --- ZendEngine2/zend_hash.c:1.129   Mon Feb  6 20:36:51 2006
> > +++ ZendEngine2/zend_hash.c Mon Feb 13 10:23:57 2006
> > @@ -17,7 +17,7 @@
> >     
> > 
> +-------------------------------------------------------------
> ---------+
> >  */
> >  
> > -/* $Id: zend_hash.c,v 1.129 2006/02/06 20:36:51 tony2001 Exp $ */
> > +/* $Id: zend_hash.c,v 1.130 2006/02/13 10:23:57 dmitry Exp $ */
> >  
> >  #include "zend.h"
> >  #include "zend_operators.h"
> > @@ -49,16 +49,16 @@
> >  
> >  #define UNICODE_KEY(ht, type, arKey, nKeyLength, tmp) \
> >     if (ht->unicode && type == IS_STRING) { \
> > -    UErrorCode status = U_ZERO_ERROR; \
> > +           UErrorCode status = U_ZERO_ERROR; \
> >             UChar *u = NULL; \
> >             int32_t u_len; \
> >             TSRMLS_FETCH(); \
> >             
> zend_convert_to_unicode(ZEND_U_CONVERTER(UG(runtime_encoding_c
> onv)), &u, &u_len, (char*)arKey, nKeyLength-1, &status); \
> > -    if (U_FAILURE(status)) { \
> > +           if (U_FAILURE(status)) { \
> >                     /* UTODO: */ \
> > -           } \
> > -           type = IS_UNICODE; \
> > -           tmp = arKey = u; \
> > +           } \
> > +           type = IS_UNICODE; \
> > +           tmp = arKey = u; \
> >     }
> >  
> >  
> > @@ -1781,6 +1781,57 @@
> >             p = p->pListLast;
> >     }
> >  }
> > +
> > +ZEND_API void zend_hash_to_unicode(HashTable *ht, apply_func_t 
> > +apply_func TSRMLS_DC) {
> > +   Bucket **p;
> > +   uint nIndex;
> > +
> > +   IS_CONSISTENT(ht);
> > +   if (ht->unicode) {
> > +           return;
> > +   }
> > +
> > +   ht->unicode = 1;
> > +   memset(ht->arBuckets, 0, ht->nTableSize * sizeof(Bucket *));
> > +   p = &ht->pListHead;
> > +   while ((*p) != NULL) {
> > +           if ((*p)->key.type == IS_STRING) {
> > +                   UErrorCode status = U_ZERO_ERROR;
> > +                   UChar *u = NULL;
> > +                   int32_t u_len;
> > +                   Bucket *q;
> > +
> > +                   
> > 
> +zend_convert_to_unicode(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), 
> > +&u, &u_len, (char*)(*p)->key.u.string, (*p)->nKeyLength-1, 
> &status);
> > +
> > +                   q = (Bucket *) 
> pemalloc(sizeof(Bucket)-sizeof(q->key.u)+((u_len+1)*2), 
> ht->persistent);
> > +                   memcpy(q, *p, sizeof(Bucket)-sizeof(q->key.u));
> > +                   memcpy(q->key.u.unicode, u, (u_len+1)*2);
> > +                   q->key.type = IS_UNICODE;
> > +                   q->nKeyLength = u_len+1;
> > +                   q->h = 
> zend_u_inline_hash_func(IS_UNICODE, (void*)q->key.u.unicode, 
> q->nKeyLength);
> > +                   if ((*p)->pData == &(*p)->pDataPtr) {
> > +                           q->pData = &q->pDataPtr;
> > +                   }
> > +                   efree(u);
> > +                   pefree(*p, ht->persistent);
> > +                   *p = q;
> > +                   if (q->pListNext) {
> > +                           q->pListNext->pListLast = q;
> > +                   } else {
> > +                           ht->pListTail = q;
> > +                   }
> > +           }
> > +           nIndex = (*p)->h & ht->nTableMask;
> > +           CONNECT_TO_BUCKET_DLLIST(*p, ht->arBuckets[nIndex]);
> > +           ht->arBuckets[nIndex] = *p;
> > +           if (apply_func) {
> > +                   apply_func((*p)->pData TSRMLS_CC);
> > +           }
> > +           p = &(*p)->pListNext;
> > +   }
> > +}
> > +
> >  #endif
> 
> Hi, ^^^^^ above endif is misplaced, and prevents build 
> without --enable-debug.
> 
> Regards,
> -- 
> Michael - <mike(@)php.net> 
> http://dev.iworks.at/ext-http/http-functions.html.gz
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to