diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index b9a0fae4e1b..564ef35d213 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -153,6 +153,11 @@ ZEND_API ulong hashpjw(char *arKey, uint nKeyLength) } \ memcpy(&(p)->pDataPtr, pData, sizeof(void *)); \ (p)->pData = &(p)->pDataPtr; \ + } else if (nDataSize == 0) { \ + if (!(p)->pDataPtr) { \ + pefree((p)->pData, (ht)->persistent); \ + } \ + (p)->pData = &(p)->pDataPtr; \ } else { \ if ((p)->pDataPtr) { \ (p)->pData = (void *) pemalloc(nDataSize, (ht)->persistent); \ @@ -165,6 +170,8 @@ ZEND_API ulong hashpjw(char *arKey, uint nKeyLength) if (nDataSize == sizeof(void*)) { \ memcpy(&(p)->pDataPtr, pData, sizeof(void *)); \ (p)->pData = &(p)->pDataPtr; \ + } else if (nDataSize == 0) { \ + (p)->pData = &(p)->pDataPtr; \ } else { \ (p)->pData = (void *) pemalloc(nDataSize, (ht)->persistent); \ if (!(p)->pData) { \