Guest User

Untitled

a guest
Jul 17th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.89 KB | None | 0 0
  1. Index: Zend/zend.c
  2. ===================================================================
  3. --- Zend/zend.c (revision 290872)
  4. +++ Zend/zend.c (working copy)
  5. @@ -1010,7 +1010,8 @@
  6. if (!error_filename) {
  7. error_filename = "Unknown";
  8. }
  9. -
  10. +
  11. + EG(error_handled_by_user) = 0;
  12. va_start(args, format);
  13.  
  14. /* if we don't have a user defined error handler */
  15. @@ -1104,6 +1105,20 @@
  16. zend_error_cb(type, error_filename, error_lineno, format, args);
  17. }
  18. zval_ptr_dtor(&retval);
  19. +
  20. + /* allows monitoring type extensions to intercept calls even if
  21. + user has defined an error handler. */
  22. + if (EG(always_invoke_error_cb)) {
  23. + va_list orig_cb_copy;
  24. +
  25. + va_copy(orig_cb_copy, args);
  26. + EG(error_handled_by_user) = 1;
  27. + zend_error_cb(type, error_filename, error_lineno, format, orig_cb_copy);
  28. +#ifdef va_copy
  29. + va_end(orig_cb_copy);
  30. +#endif
  31. + EG(error_handled_by_user) = 0;
  32. + }
  33. }
  34. } else if (!EG(exception)) {
  35. /* The user error handler failed, use built-in error handler */
  36. Index: Zend/zend_globals.h
  37. ===================================================================
  38. --- Zend/zend_globals.h (revision 290872)
  39. +++ Zend/zend_globals.h (working copy)
  40. @@ -257,6 +257,9 @@
  41. void *saved_fpu_cw;
  42.  
  43. void *reserved[ZEND_MAX_RESERVED_RESOURCES];
  44. +
  45. + zend_bool always_invoke_error_cb;
  46. + zend_bool error_handled_by_user;
  47. };
  48.  
  49. struct _zend_ini_scanner_globals {
  50. Index: Zend/zend_execute_API.c
  51. ===================================================================
  52. --- Zend/zend_execute_API.c (revision 290872)
  53. +++ Zend/zend_execute_API.c (working copy)
  54. @@ -150,6 +150,8 @@
  55. EG(in_autoload) = NULL;
  56. EG(autoload_func) = NULL;
  57. EG(error_handling) = EH_NORMAL;
  58. + EG(always_invoke_error_cb) = 0;
  59. + EG(error_handled_by_user) = 0;
  60.  
  61. zend_vm_stack_init(TSRMLS_C);
  62. zend_vm_stack_push((void *) NULL TSRMLS_CC);
Add Comment
Please, Sign In to add comment