]> granicus.if.org Git - php/commitdiff
Fix bug #63595 GMP memory management conflicts with other libraries using GMP
authorRemi Collet <remi@php.net>
Mon, 27 Oct 2014 06:45:34 +0000 (07:45 +0100)
committerStanislav Malyshev <stas@php.net>
Mon, 3 Nov 2014 19:42:15 +0000 (11:42 -0800)
Drop use of php memory allocators as this raise various conflicts
with other extensions and libraries which use libgmp.

No other solution found.
We cannot for ensure correct use of allocator with shared lib.

Some memory can allocated before php init
Some memory can be freed after php shutdown

Known broken run cases
- php + curl + gnutls + gmp
- mod_gnutls + mod_php + gnutls + gmp
- php + freetds + gnutls + gmp
- php + odbc + freetds + gnutls + gmp
- php + php-mapi (zarafa) + gnutls + gmp

ext/gmp/gmp.c

index f51bd8c59c04ec1c3dab3b7a950b94404e6a7b0a..b1553fa16f092c38391128d22e9d398e104222cb 100644 (file)
@@ -324,30 +324,6 @@ static void _php_gmpnum_free(zend_rsrc_list_entry *rsrc TSRMLS_DC);
 #      define MAX_BASE 36
 #endif
 
-/* {{{ gmp_emalloc
- */
-static void *gmp_emalloc(size_t size)
-{
-       return emalloc(size);
-}
-/* }}} */
-
-/* {{{ gmp_erealloc
- */
-static void *gmp_erealloc(void *ptr, size_t old_size, size_t new_size)
-{
-       return erealloc(ptr, new_size);
-}
-/* }}} */
-
-/* {{{ gmp_efree
- */
-static void gmp_efree(void *ptr, size_t size)
-{
-       efree(ptr);
-}
-/* }}} */
-
 /* {{{ ZEND_GINIT_FUNCTION
  */
 static ZEND_GINIT_FUNCTION(gmp)
@@ -369,8 +345,6 @@ ZEND_MODULE_STARTUP_D(gmp)
 #endif
        REGISTER_STRING_CONSTANT("GMP_VERSION", (char *)gmp_version, CONST_CS | CONST_PERSISTENT);
 
-       mp_set_memory_functions(gmp_emalloc, gmp_erealloc, gmp_efree);
-
        return SUCCESS;
 }
 /* }}} */