From a975cfae4719986e5ea0ff06a45b91e1cdd042b3 Mon Sep 17 00:00:00 2001 From: Bruce Dawson Date: Mon, 5 Jan 2015 13:21:46 -0800 Subject: Get rid of fifteen copies of m_sTimeMap and their initializers. m_sTimeMap is a global variable with a constructor and destructor, which is not allowed. This change moves it to a function with a static pointer so that it is constructed on demand and then leaked, thus avoiding having startup and shutdown code. This also fixes a worrisome bug caused by having m_sTimeMap defined in a header file. Because m_sTimeMap was defined (and marked as static) in a header file there were fifteen separate copies of it, one for each source file which included the header file. This could easily lead to bugs because a timer that was added from one source file would be invisible to other source files. Each instance of m_sTimeMap added four entries to the dump-static-initializers.py report, for a total of sixty, so this fix significantly cleans up that report. BUG=441899 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/831903002 --- fpdfsdk/src/javascript/JS_Object.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'fpdfsdk/src/javascript') diff --git a/fpdfsdk/src/javascript/JS_Object.cpp b/fpdfsdk/src/javascript/JS_Object.cpp index 3b7774d4d8..8a019d40e8 100644 --- a/fpdfsdk/src/javascript/JS_Object.cpp +++ b/fpdfsdk/src/javascript/JS_Object.cpp @@ -12,6 +12,13 @@ // #include "../../include/javascript/JS_ResMgr.h" #include "../../include/javascript/JS_Context.h" +JS_TIMER_MAPARRAY& GetTimeMap() +{ + // Leak the timer array at shutdown. + static auto* timeMap = new JS_TIMER_MAPARRAY; + return *timeMap; +} + int FXJS_MsgBox(CPDFDoc_Environment* pApp, CPDFSDK_PageView* pPageView, FX_LPCWSTR swMsg, FX_LPCWSTR swTitle, FX_UINT nType, FX_UINT nIcon) { int nRet = 0; -- cgit v1.2.3