@@ -519,7 +519,9 @@ phpdbg_watch_element *phpdbg_add_watch_element(phpdbg_watchpoint_t *watch, phpdb
519519 phpdbg_watch_element * old_element ;
520520 watch = res -> ptr ;
521521 if ((old_element = zend_hash_find_ptr (& watch -> elements , element -> str ))) {
522- phpdbg_free_watch_element (element );
522+ if (element != old_element ) {
523+ phpdbg_free_watch_element (element );
524+ }
523525 return old_element ;
524526 }
525527 }
@@ -1468,6 +1470,7 @@ void phpdbg_setup_watchpoints(void) {
14681470
14691471 /* put these on a separate page, to avoid conflicts with other memory */
14701472 PHPDBG_G (watchlist_mem ) = malloc (phpdbg_pagesize > sizeof (HashTable ) ? phpdbg_pagesize : sizeof (HashTable ));
1473+ PHPDBG_G (original_watchlist_mem ) = PHPDBG_G (watchlist_mem );
14711474 zend_hash_init (PHPDBG_G (watchlist_mem ), phpdbg_pagesize / (sizeof (Bucket ) + sizeof (uint32_t )), NULL , NULL , 1 );
14721475 PHPDBG_G (watchlist_mem_backup ) = malloc (phpdbg_pagesize > sizeof (HashTable ) ? phpdbg_pagesize : sizeof (HashTable ));
14731476 zend_hash_init (PHPDBG_G (watchlist_mem_backup ), phpdbg_pagesize / (sizeof (Bucket ) + sizeof (uint32_t )), NULL , NULL , 1 );
@@ -1521,8 +1524,8 @@ void phpdbg_destroy_watchpoints(void) {
15211524 zend_hash_destroy (& PHPDBG_G (watch_recreation ));
15221525 zend_hash_destroy (& PHPDBG_G (watch_free ));
15231526 zend_hash_destroy (& PHPDBG_G (watch_collisions ));
1524- zend_hash_destroy (PHPDBG_G (watchlist_mem ));
1525- free (PHPDBG_G (watchlist_mem ));
1527+ zend_hash_destroy (PHPDBG_G (original_watchlist_mem ));
1528+ free (PHPDBG_G (original_watchlist_mem ));
15261529 zend_hash_destroy (PHPDBG_G (watchlist_mem_backup ));
15271530 free (PHPDBG_G (watchlist_mem_backup ));
15281531}
0 commit comments