From d428bf2d4edab232690b64977aaf0a3b15585843 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 17 Feb 2015 19:15:22 +0100 Subject: [PATCH] improve debugability in TS debug builds gdb seems to be not always able to fetch the correct context for thread locals. Thus, the "if (TSRMLS_CACHE)" clause causes gdb to show crashes which aren't recognized neither with helgrind nor in release builds. This is reproducable by setting breakpoints on the exact line where PHP has a tsrm_get_ls_cache() call. --- TSRM/TSRM.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index cdb6e87a22..859b3fac01 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -170,7 +170,11 @@ TSRM_API void *tsrm_get_ls_cache(void); #define TSRMG_STATIC(id, type, element) (((type) (*((void ***) TSRMLS_CACHE))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element) #define TSRMLS_CACHE_EXTERN() extern TSRM_TLS void *TSRMLS_CACHE #define TSRMLS_CACHE_DEFINE() TSRM_TLS void *TSRMLS_CACHE = NULL +#if ZEND_DEBUG +#define TSRMLS_CACHE_UPDATE() TSRMLS_CACHE = tsrm_get_ls_cache() +#else #define TSRMLS_CACHE_UPDATE() if (!TSRMLS_CACHE) TSRMLS_CACHE = tsrm_get_ls_cache() +#endif #define TSRMLS_CACHE _tsrm_ls_cache /* BC only */ -- 2.50.1