@@ -516,7 +516,9 @@ phpdbg_watch_element *phpdbg_add_watch_element(phpdbg_watchpoint_t *watch, phpdb
516516 phpdbg_watch_element * old_element ;
517517 watch = res -> ptr ;
518518 if ((old_element = zend_hash_find_ptr (& watch -> elements , element -> str ))) {
519- phpdbg_free_watch_element (element );
519+ if (element != old_element ) {
520+ phpdbg_free_watch_element (element );
521+ }
520522 return old_element ;
521523 }
522524 }
@@ -1471,6 +1473,7 @@ void phpdbg_setup_watchpoints(void) {
14711473
14721474 /* put these on a separate page, to avoid conflicts with other memory */
14731475 PHPDBG_G (watchlist_mem ) = malloc (phpdbg_pagesize > sizeof (HashTable ) ? phpdbg_pagesize : sizeof (HashTable ));
1476+ PHPDBG_G (original_watchlist_mem ) = PHPDBG_G (watchlist_mem );
14741477 zend_hash_init (PHPDBG_G (watchlist_mem ), phpdbg_pagesize / (sizeof (Bucket ) + sizeof (uint32_t )), NULL , NULL , 1 );
14751478 PHPDBG_G (watchlist_mem_backup ) = malloc (phpdbg_pagesize > sizeof (HashTable ) ? phpdbg_pagesize : sizeof (HashTable ));
14761479 zend_hash_init (PHPDBG_G (watchlist_mem_backup ), phpdbg_pagesize / (sizeof (Bucket ) + sizeof (uint32_t )), NULL , NULL , 1 );
@@ -1517,8 +1520,8 @@ void phpdbg_destroy_watchpoints(void) {
15171520 zend_hash_destroy (& PHPDBG_G (watch_recreation ));
15181521 zend_hash_destroy (& PHPDBG_G (watch_free ));
15191522 zend_hash_destroy (& PHPDBG_G (watch_collisions ));
1520- zend_hash_destroy (PHPDBG_G (watchlist_mem ));
1521- free (PHPDBG_G (watchlist_mem ));
1523+ zend_hash_destroy (PHPDBG_G (original_watchlist_mem ));
1524+ free (PHPDBG_G (original_watchlist_mem ));
15221525 zend_hash_destroy (PHPDBG_G (watchlist_mem_backup ));
15231526 free (PHPDBG_G (watchlist_mem_backup ));
15241527}
0 commit comments