xref: /trunk/main/external/mingwheaders/mingw_atl_headers.patch (revision 07a3d7f126518b23ae382088cf657ec498e294b1)
1cdf0e10cSrcweir--- include/atl/atlbase.h.orig  2005-04-14 17:54:32.000000000 +0900
2cdf0e10cSrcweir+++ include/atl/atlbase.h   2007-12-23 14:38:02.467500000 +0900
3cdf0e10cSrcweir@@ -10,6 +10,9 @@
4cdf0e10cSrcweir
5cdf0e10cSrcweir #ifndef __ATLBASE_H__
6cdf0e10cSrcweir #define __ATLBASE_H__
7cdf0e10cSrcweir+#if __GNUC__ >=3
8cdf0e10cSrcweir+#pragma GCC system_header
9cdf0e10cSrcweir+#endif
10cdf0e10cSrcweir
11cdf0e10cSrcweir #ifndef __cplusplus
12cdf0e10cSrcweir         #error ATL requires C++ compilation (use a .cpp suffix)
13cdf0e10cSrcweir@@ -73,19 +76,47 @@
14cdf0e10cSrcweir #define _ATL_TYPELIB_INDEX_LENGTH 10
15cdf0e10cSrcweir #define _ATL_QUOTES_SPACE 2
16cdf0e10cSrcweir
17cdf0e10cSrcweir-#pragma pack(push, _ATL_PACKING)
18cdf0e10cSrcweir+#pragma pack(push, 8)
19cdf0e10cSrcweir
20cdf0e10cSrcweir #if defined(_ATL_DLL)
21cdf0e10cSrcweir         #pragma comment(lib, "atl.lib")
22cdf0e10cSrcweir #endif
23cdf0e10cSrcweir
24cdf0e10cSrcweir-extern "C" const __declspec(selectany) GUID LIBID_ATLLib = {0x44EC0535,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}};
25cdf0e10cSrcweir-extern "C" const __declspec(selectany) CLSID CLSID_Registrar = {0x44EC053A,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}};
26cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IRegistrar = {0x44EC053B,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}};
27cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IAxWinHostWindow = {0xb6ea2050,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}};
28cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IAxWinAmbientDispatch = {0xb6ea2051,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}};
29cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IInternalConnection = {0x72AD0770,0x6A9F,0x11d1,{0xBC,0xEC,0x00,0x60,0x08,0x8F,0x44,0x4E}};
30cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IDocHostUIHandlerDispatch = {0x425B5AF0,0x65F1,0x11d1,{0x96,0x11,0x00,0x00,0xF8,0x1E,0x0D,0x0D}};
31cdf0e10cSrcweir+#define __uuidof(I) IID_##I
32cdf0e10cSrcweir+
33cdf0e10cSrcweir+#include <excpt.h>
34cdf0e10cSrcweir+
35cdf0e10cSrcweir+namespace ATL
36cdf0e10cSrcweir+{
37cdf0e10cSrcweir+inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
38cdf0e10cSrcweir+{
39cdf0e10cSrcweir+   return (
40cdf0e10cSrcweir+      ((unsigned long *) &rguid1)[0] == ((unsigned long *) &rguid2)[0] &&
41cdf0e10cSrcweir+      ((unsigned long *) &rguid1)[1] == ((unsigned long *) &rguid2)[1] &&
42cdf0e10cSrcweir+      ((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] &&
43cdf0e10cSrcweir+      ((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]);
44cdf0e10cSrcweir+}
45cdf0e10cSrcweir+}
46cdf0e10cSrcweir+
47cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
48cdf0e10cSrcweir+extern "C" const GUID LIBID_ATLLib = {0x44EC0535,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}};
49cdf0e10cSrcweir+extern "C" const CLSID CLSID_Registrar = {0x44EC053A,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}};
50cdf0e10cSrcweir+extern "C" const IID IID_IRegistrar = {0x44EC053B,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}};
51cdf0e10cSrcweir+extern "C" const IID IID_IAxWinHostWindow = {0xb6ea2050,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}};
52cdf0e10cSrcweir+extern "C" const IID IID_IAxWinAmbientDispatch = {0xb6ea2051,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}};
53cdf0e10cSrcweir+extern "C" const IID IID_IInternalConnection = {0x72AD0770,0x6A9F,0x11d1,{0xBC,0xEC,0x00,0x60,0x08,0x8F,0x44,0x4E}};
54cdf0e10cSrcweir+extern "C" const IID IID_IDocHostUIHandlerDispatch = {0x425B5AF0,0x65F1,0x11d1,{0x96,0x11,0x00,0x00,0xF8,0x1E,0x0D,0x0D}};
55cdf0e10cSrcweir+#else
56cdf0e10cSrcweir+extern "C" {
57cdf0e10cSrcweir+extern const GUID LIBID_ATLLib;
58cdf0e10cSrcweir+extern const CLSID CLSID_Registrar;
59cdf0e10cSrcweir+extern const IID IID_IRegistrar;
60cdf0e10cSrcweir+extern const IID IID_IAxWinHostWindow;
61cdf0e10cSrcweir+extern const IID IID_IAxWinAmbientDispatch;
62cdf0e10cSrcweir+extern const IID IID_IInternalConnection;
63cdf0e10cSrcweir+extern const IID IID_IDocHostUIHandlerDispatch;
64cdf0e10cSrcweir+}
65cdf0e10cSrcweir+#endif
66cdf0e10cSrcweir
67cdf0e10cSrcweir #ifndef _ATL_DLL_IMPL
68cdf0e10cSrcweir namespace ATL
69cdf0e10cSrcweir@@ -135,7 +166,7 @@
70cdf0e10cSrcweir                 IUnknown* p = NULL;
71cdf0e10cSrcweir                 if (pfnGetClassObject == NULL)
72cdf0e10cSrcweir                         return S_OK;
73cdf0e10cSrcweir-                HRESULT hRes = pfnGetClassObject(pfnCreateInstance, IID_IUnknown, (LPVOID*) &p);
74cdf0e10cSrcweir+                HRESULT hRes = pfnGetClassObject((LPVOID)pfnCreateInstance, IID_IUnknown, (LPVOID*) &p);
75cdf0e10cSrcweir                 if (SUCCEEDED(hRes))
76cdf0e10cSrcweir                         hRes = CoRegisterClassObject(*pclsid, p, dwClsContext, dwFlags, &dwRegister);
77cdf0e10cSrcweir                 if (p != NULL)
78cdf0e10cSrcweir@@ -284,13 +315,15 @@
79cdf0e10cSrcweir };
80cdf0e10cSrcweir #pragma pack(pop)
81cdf0e10cSrcweir
82cdf0e10cSrcweir-PVOID __stdcall __AllocStdCallThunk(VOID);
83cdf0e10cSrcweir-VOID  __stdcall __FreeStdCallThunk(PVOID);
84cdf0e10cSrcweir+//PVOID __stdcall __AllocStdCallThunk(VOID);
85cdf0e10cSrcweir+//VOID  __stdcall __FreeStdCallThunk(PVOID);
86cdf0e10cSrcweir
87cdf0e10cSrcweir-#define AllocStdCallThunk() __AllocStdCallThunk()
88cdf0e10cSrcweir-#define FreeStdCallThunk(p) __FreeStdCallThunk(p)
89cdf0e10cSrcweir+//#define AllocStdCallThunk() __AllocStdCallThunk()
90cdf0e10cSrcweir+//#define FreeStdCallThunk(p) __FreeStdCallThunk(p)
91cdf0e10cSrcweir
92cdf0e10cSrcweir-#pragma comment(lib, "atlthunk.lib")
93cdf0e10cSrcweir+//#pragma comment(lib, "atlthunk.lib")
94cdf0e10cSrcweir+#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
95cdf0e10cSrcweir+#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)
96cdf0e10cSrcweir
97cdf0e10cSrcweir #elif defined (_M_AMD64)
98cdf0e10cSrcweir #pragma pack(push,2)
99cdf0e10cSrcweir@@ -465,7 +498,7 @@
100cdf0e10cSrcweir         return( HRESULT_FROM_WIN32( nError ) );
101cdf0e10cSrcweir }
102cdf0e10cSrcweir
103cdf0e10cSrcweir-inline void __declspec(noreturn) _AtlRaiseException( DWORD dwExceptionCode, DWORD dwExceptionFlags = EXCEPTION_NONCONTINUABLE )
104cdf0e10cSrcweir+inline void _AtlRaiseException( DWORD dwExceptionCode, DWORD dwExceptionFlags = EXCEPTION_NONCONTINUABLE )
105cdf0e10cSrcweir {
106cdf0e10cSrcweir         RaiseException( dwExceptionCode, dwExceptionFlags, 0, NULL );
107cdf0e10cSrcweir }
108cdf0e10cSrcweir@@ -658,6 +691,7 @@
109cdf0e10cSrcweir class _NoAddRefReleaseOnCComPtr : public T
110cdf0e10cSrcweir {
111cdf0e10cSrcweir         private:
112cdf0e10cSrcweir+                _NoAddRefReleaseOnCComPtr();
113cdf0e10cSrcweir                 STDMETHOD_(ULONG, AddRef)()=0;
114cdf0e10cSrcweir                 STDMETHOD_(ULONG, Release)()=0;
115cdf0e10cSrcweir };
116cdf0e10cSrcweir@@ -781,6 +815,7 @@
117cdf0e10cSrcweir         {
118cdf0e10cSrcweir                 return AtlAdvise(p, pUnk, iid, pdw);
119cdf0e10cSrcweir         }
120cdf0e10cSrcweir+#if 0
121cdf0e10cSrcweir         HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL)
122cdf0e10cSrcweir         {
123cdf0e10cSrcweir                 ATLASSERT(p == NULL);
124cdf0e10cSrcweir@@ -801,11 +836,12 @@
125cdf0e10cSrcweir                 ATLASSERT(pp != NULL && *pp == NULL);
126cdf0e10cSrcweir                 return p->QueryInterface(__uuidof(Q), (void**)pp);
127cdf0e10cSrcweir         }
128cdf0e10cSrcweir+#endif
129cdf0e10cSrcweir         T* p;
130cdf0e10cSrcweir };
131cdf0e10cSrcweir
132cdf0e10cSrcweir
133cdf0e10cSrcweir-template <class T, const IID* piid = &__uuidof(T)>
134cdf0e10cSrcweir+template <class T, const IID* piid>
135cdf0e10cSrcweir class CComQIPtr
136cdf0e10cSrcweir {
137cdf0e10cSrcweir public:
138cdf0e10cSrcweir@@ -933,6 +969,7 @@
139cdf0e10cSrcweir         {
140cdf0e10cSrcweir                 return AtlAdvise(p, pUnk, iid, pdw);
141cdf0e10cSrcweir         }
142cdf0e10cSrcweir+#if 0
143cdf0e10cSrcweir         HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL)
144cdf0e10cSrcweir         {
145cdf0e10cSrcweir                 ATLASSERT(p == NULL);
146cdf0e10cSrcweir@@ -953,6 +990,7 @@
147cdf0e10cSrcweir                 ATLASSERT(pp != NULL && *pp == NULL);
148cdf0e10cSrcweir                 return p->QueryInterface(__uuidof(Q), (void**)pp);
149cdf0e10cSrcweir         }
150cdf0e10cSrcweir+#endif
151cdf0e10cSrcweir         T* p;
152cdf0e10cSrcweir };
153cdf0e10cSrcweir
154cdf0e10cSrcweir@@ -1087,12 +1125,14 @@
155cdf0e10cSrcweir                         hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(IUnknown), (void**)&p);
156cdf0e10cSrcweir                 return hr;
157cdf0e10cSrcweir         }
158cdf0e10cSrcweir+#if 0
159cdf0e10cSrcweir         template <class Q>
160cdf0e10cSrcweir         HRESULT QueryInterface(Q** pp)
161cdf0e10cSrcweir         {
162cdf0e10cSrcweir                 ATLASSERT(pp != NULL && *pp == NULL);
163cdf0e10cSrcweir                 return p->QueryInterface(__uuidof(Q), (void**)pp);
164cdf0e10cSrcweir         }
165cdf0e10cSrcweir+#endif
166cdf0e10cSrcweir         IUnknown* p;
167cdf0e10cSrcweir };
168cdf0e10cSrcweir
169cdf0e10cSrcweir@@ -1257,21 +1297,26 @@
170cdf0e10cSrcweir        LeaveCriticalSection(&m_sec);
171cdf0e10cSrcweir        return S_OK;
172cdf0e10cSrcweir    }
173cdf0e10cSrcweir+   static void _InitHandler(void *pData, LPEXCEPTION_POINTERS ep)
174cdf0e10cSrcweir+     {
175cdf0e10cSrcweir+       HRESULT &hRes=*reinterpret_cast<HRESULT*>(pData);
176cdf0e10cSrcweir+           if (STATUS_NO_MEMORY == ep->ExceptionRecord->ExceptionCode)
177cdf0e10cSrcweir+               hRes = E_OUTOFMEMORY;
178cdf0e10cSrcweir+           else
179cdf0e10cSrcweir+               hRes = E_FAIL;
180cdf0e10cSrcweir+     }
181cdf0e10cSrcweir    HRESULT Init() throw()
182cdf0e10cSrcweir    {
183cdf0e10cSrcweir        HRESULT hRes = S_OK;
184cdf0e10cSrcweir-       __try
185cdf0e10cSrcweir-       {
186cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
187cdf0e10cSrcweir+                __SEHandler _sehandler;
188cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
189cdf0e10cSrcweir+                {
190cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, &hRes, reinterpret_cast<__SEHandler::PF>(EXCEPTION_EXECUTE_HANDLER), _InitHandler);
191cdf0e10cSrcweir            InitializeCriticalSection(&m_sec);
192cdf0e10cSrcweir-       }
193cdf0e10cSrcweir+                }
194cdf0e10cSrcweir        // structured exception may be raised in low memory situations
195cdf0e10cSrcweir-       __except(EXCEPTION_EXECUTE_HANDLER)
196cdf0e10cSrcweir-       {
197cdf0e10cSrcweir-           if (STATUS_NO_MEMORY == GetExceptionCode())
198cdf0e10cSrcweir-               hRes = E_OUTOFMEMORY;
199cdf0e10cSrcweir-           else
200cdf0e10cSrcweir-               hRes = E_FAIL;
201cdf0e10cSrcweir-       }
202cdf0e10cSrcweir+                _sehandler.Reset();
203cdf0e10cSrcweir        return hRes;
204cdf0e10cSrcweir    }
205cdf0e10cSrcweir
206cdf0e10cSrcweir@@ -2799,10 +2844,19 @@
207cdf0e10cSrcweir
208cdf0e10cSrcweir
209cdf0e10cSrcweir class CComModule;
210cdf0e10cSrcweir-__declspec(selectany) CComModule* _pModule=NULL;
211cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
212cdf0e10cSrcweir+CComModule* _pModule=NULL;
213cdf0e10cSrcweir+#else
214cdf0e10cSrcweir+extern CComModule* _pModule;
215cdf0e10cSrcweir+#endif
216cdf0e10cSrcweir+
217cdf0e10cSrcweir
218cdf0e10cSrcweir // {B62F5910-6528-11d1-9611-0000F81E0D0D}
219cdf0e10cSrcweir-_declspec(selectany) GUID GUID_ATLVer30 = { 0xb62f5910, 0x6528, 0x11d1, { 0x96, 0x11, 0x0, 0x0, 0xf8, 0x1e, 0xd, 0xd } };
220cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
221cdf0e10cSrcweir+GUID GUID_ATLVer30 = { 0xb62f5910, 0x6528, 0x11d1, { 0x96, 0x11, 0x0, 0x0, 0xf8, 0x1e, 0xd, 0xd } };
222cdf0e10cSrcweir+#else
223cdf0e10cSrcweir+extern GUID GUID_ATLVer30;
224cdf0e10cSrcweir+#endif
225cdf0e10cSrcweir
226cdf0e10cSrcweir class CComModule : public _ATL_MODULE
227cdf0e10cSrcweir {
228cdf0e10cSrcweir@@ -4286,7 +4340,9 @@
229cdf0e10cSrcweir
230cdf0e10cSrcweir #endif
231cdf0e10cSrcweir
232cdf0e10cSrcweir-__declspec(selectany) GUID CComModule::m_libid = {0x0,0x0,0x0,{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}};
233cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
234cdf0e10cSrcweir+GUID CComModule::m_libid = {0x0,0x0,0x0,{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}};
235cdf0e10cSrcweir+#endif
236cdf0e10cSrcweir
237cdf0e10cSrcweir #ifdef _ATL_STATIC_REGISTRY
238cdf0e10cSrcweir #define UpdateRegistryFromResource UpdateRegistryFromResourceS
239cdf0e10cSrcweir@@ -4355,7 +4411,9 @@
240cdf0e10cSrcweir         LONG m_nLockCnt;
241cdf0e10cSrcweir };
242cdf0e10cSrcweir
243cdf0e10cSrcweir-__declspec(selectany) UINT CComApartment::ATL_CREATE_OBJECT = 0;
244cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
245cdf0e10cSrcweir+UINT CComApartment::ATL_CREATE_OBJECT = 0;
246cdf0e10cSrcweir+#endif
247cdf0e10cSrcweir
248cdf0e10cSrcweir class CComSimpleThreadAllocator
249cdf0e10cSrcweir {
250cdf0e10cSrcweir@@ -5855,6 +5913,10 @@
251cdf0e10cSrcweir                 }
252cdf0e10cSrcweir
253cdf0e10cSrcweir         }
254cdf0e10cSrcweir+        static int _Except(void *pThis, LPEXCEPTION_POINTERS lpEP)
255cdf0e10cSrcweir+        {
256cdf0e10cSrcweir+     return reinterpret_cast<CVirtualBuffer *>(pThis)->Except(lpEP);
257cdf0e10cSrcweir+   }
258cdf0e10cSrcweir         void Seek(int nElement)
259cdf0e10cSrcweir         {
260cdf0e10cSrcweir                 if(nElement < 0 || nElement >= m_nMaxElements)
261cdf0e10cSrcweir@@ -5866,41 +5928,53 @@
262cdf0e10cSrcweir         {
263cdf0e10cSrcweir                 if(nElement < 0 || nElement >= m_nMaxElements)
264cdf0e10cSrcweir                         _AtlRaiseException((DWORD)EXCEPTION_ARRAY_BOUNDS_EXCEEDED);
265cdf0e10cSrcweir-                __try
266cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
267cdf0e10cSrcweir+                __SEHandler _sehandler;
268cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
269cdf0e10cSrcweir                 {
270cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, this, _Except);
271cdf0e10cSrcweir                         T* p = &m_pBase[nElement];
272cdf0e10cSrcweir                         *p = Element;
273cdf0e10cSrcweir                         m_pTop = p > m_pTop ? p : m_pTop;
274cdf0e10cSrcweir                 }
275cdf0e10cSrcweir-                __except(Except(GetExceptionInformation()))
276cdf0e10cSrcweir+                else
277cdf0e10cSrcweir                 {
278cdf0e10cSrcweir                 }
279cdf0e10cSrcweir+                _sehandler.Reset();
280cdf0e10cSrcweir
281cdf0e10cSrcweir         }
282cdf0e10cSrcweir         template <class Q>
283cdf0e10cSrcweir         void WriteBulk(Q& helper)
284cdf0e10cSrcweir         {
285cdf0e10cSrcweir-                __try
286cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
287cdf0e10cSrcweir+                __SEHandler _sehandler;
288cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
289cdf0e10cSrcweir                 {
290cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, this, _Except);
291cdf0e10cSrcweir                         m_pCurrent = helper(m_pBase);
292cdf0e10cSrcweir                         m_pTop = m_pCurrent > m_pTop ? m_pCurrent : m_pTop;
293cdf0e10cSrcweir                 }
294cdf0e10cSrcweir-                __except(Except(GetExceptionInformation()))
295cdf0e10cSrcweir+                else
296cdf0e10cSrcweir                 {
297cdf0e10cSrcweir                 }
298cdf0e10cSrcweir+                _sehandler.Reset();
299cdf0e10cSrcweir         }
300cdf0e10cSrcweir         void Write(const T& Element)
301cdf0e10cSrcweir         {
302cdf0e10cSrcweir             if (m_pCurrent < &m_pBase[m_nMaxElements]) {
303cdf0e10cSrcweir-                __try
304cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
305cdf0e10cSrcweir+                __SEHandler _sehandler;
306cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
307cdf0e10cSrcweir                 {
308cdf0e10cSrcweir+                    _sehandler.Set(_sejmpbuf, this, _Except);
309cdf0e10cSrcweir                     *m_pCurrent = Element;
310cdf0e10cSrcweir                     m_pCurrent++;
311cdf0e10cSrcweir                     m_pTop = m_pCurrent > m_pTop ? m_pCurrent : m_pTop;
312cdf0e10cSrcweir                 }
313cdf0e10cSrcweir-                __except(Except(GetExceptionInformation()))
314cdf0e10cSrcweir+                else
315cdf0e10cSrcweir                 {
316cdf0e10cSrcweir                 }
317cdf0e10cSrcweir+                _sehandler.Reset();
318cdf0e10cSrcweir             }
319cdf0e10cSrcweir         }
320cdf0e10cSrcweir         T& Read()
321cdf0e10cSrcweir@@ -5910,14 +5984,18 @@
322cdf0e10cSrcweir         operator BSTR()
323cdf0e10cSrcweir         {
324cdf0e10cSrcweir                 BSTR bstrTemp = NULL ;
325cdf0e10cSrcweir-                __try
326cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
327cdf0e10cSrcweir+                __SEHandler _sehandler;
328cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
329cdf0e10cSrcweir                 {
330cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, this, _Except);
331cdf0e10cSrcweir                         bstrTemp = SysAllocStringByteLen((char*) m_pBase,
332cdf0e10cSrcweir                                 (UINT) ((BYTE*)m_pTop - (BYTE*)m_pBase));
333cdf0e10cSrcweir                 }
334cdf0e10cSrcweir-                __except(Except(GetExceptionInformation()))
335cdf0e10cSrcweir+                else
336cdf0e10cSrcweir                 {
337cdf0e10cSrcweir                 }
338cdf0e10cSrcweir+                _sehandler.Reset();
339cdf0e10cSrcweir                 return bstrTemp;
340cdf0e10cSrcweir         }
341cdf0e10cSrcweir         const T& operator[](int nElement) const
342cdf0e10cSrcweir@@ -6336,6 +6414,11 @@
343cdf0e10cSrcweir //Although these functions are big, they are only used once in a module
344cdf0e10cSrcweir //so we should make them inline.
345cdf0e10cSrcweir
346cdf0e10cSrcweir+ATLINLINE int atlmoduleinitfilter(void *, LPEXCEPTION_POINTERS ep)
347cdf0e10cSrcweir+{
348cdf0e10cSrcweir+  return ep->ExceptionRecord->ExceptionCode == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
349cdf0e10cSrcweir+}
350cdf0e10cSrcweir+
351cdf0e10cSrcweir ATLINLINE ATLAPI AtlModuleInit(_ATL_MODULE* pM, _ATL_OBJMAP_ENTRY* p, HINSTANCE h)
352cdf0e10cSrcweir {
353cdf0e10cSrcweir         ATLASSERT(pM != NULL);
354cdf0e10cSrcweir@@ -6352,32 +6435,43 @@
355cdf0e10cSrcweir         pM->m_hInst = pM->m_hInstTypeLib = pM->m_hInstResource = h;
356cdf0e10cSrcweir         pM->m_nLockCnt=0L;
357cdf0e10cSrcweir         pM->m_hHeap = NULL;
358cdf0e10cSrcweir-        __try {
359cdf0e10cSrcweir+        jmp_buf _sejmpbuf;
360cdf0e10cSrcweir+        __SEHandler _sehandler;
361cdf0e10cSrcweir+        if (__builtin_setjmp(_sejmpbuf) == 0) {
362cdf0e10cSrcweir+            _sehandler.Set(_sejmpbuf, NULL, atlmoduleinitfilter);
363cdf0e10cSrcweir             InitializeCriticalSection(&pM->m_csTypeInfoHolder);
364cdf0e10cSrcweir-        } __except (GetExceptionCode() == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
365cdf0e10cSrcweir+        } else {
366cdf0e10cSrcweir             ZeroMemory(&pM->m_csTypeInfoHolder, sizeof(pM->m_csTypeInfoHolder));
367cdf0e10cSrcweir-            return STATUS_NO_MEMORY;
368cdf0e10cSrcweir+            _sehandler.Reset();
369cdf0e10cSrcweir+       return STATUS_NO_MEMORY;
370cdf0e10cSrcweir         }
371cdf0e10cSrcweir+        _sehandler.Reset();
372cdf0e10cSrcweir
373cdf0e10cSrcweir-        __try {
374cdf0e10cSrcweir+        if (__builtin_setjmp(_sejmpbuf) == 0) {
375cdf0e10cSrcweir+            _sehandler.Set(_sejmpbuf, NULL, atlmoduleinitfilter);
376cdf0e10cSrcweir             InitializeCriticalSection(&pM->m_csWindowCreate);
377cdf0e10cSrcweir-        } __except (GetExceptionCode() == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
378cdf0e10cSrcweir+        } else {
379cdf0e10cSrcweir             DeleteCriticalSection(&pM->m_csTypeInfoHolder);
380cdf0e10cSrcweir             ZeroMemory(&pM->m_csWindowCreate, sizeof(pM->m_csWindowCreate));
381cdf0e10cSrcweir             ZeroMemory(&pM->m_csTypeInfoHolder, sizeof(pM->m_csTypeInfoHolder));
382cdf0e10cSrcweir+            _sehandler.Reset();
383cdf0e10cSrcweir             return STATUS_NO_MEMORY;
384cdf0e10cSrcweir         }
385cdf0e10cSrcweir+        _sehandler.Reset();
386cdf0e10cSrcweir
387cdf0e10cSrcweir-        __try {
388cdf0e10cSrcweir+        if (__builtin_setjmp(_sejmpbuf) == 0) {
389cdf0e10cSrcweir+            _sehandler.Set(_sejmpbuf, NULL, atlmoduleinitfilter);
390cdf0e10cSrcweir             InitializeCriticalSection(&pM->m_csObjMap);
391cdf0e10cSrcweir-        } __except (GetExceptionCode() == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
392cdf0e10cSrcweir+        } else {
393cdf0e10cSrcweir             DeleteCriticalSection(&pM->m_csWindowCreate);
394cdf0e10cSrcweir             DeleteCriticalSection(&pM->m_csTypeInfoHolder);
395cdf0e10cSrcweir             ZeroMemory(&pM->m_csObjMap, sizeof(pM->m_csObjMap));
396cdf0e10cSrcweir             ZeroMemory(&pM->m_csWindowCreate, sizeof(pM->m_csWindowCreate));
397cdf0e10cSrcweir             ZeroMemory(&pM->m_csTypeInfoHolder, sizeof(pM->m_csTypeInfoHolder));
398cdf0e10cSrcweir+            _sehandler.Reset();
399cdf0e10cSrcweir             return STATUS_NO_MEMORY;
400cdf0e10cSrcweir         }
401cdf0e10cSrcweir+        _sehandler.Reset();
402cdf0e10cSrcweir #ifdef _ATL_DLL_IMPL
403cdf0e10cSrcweir         if (pM->cbSize > _nAtlModuleVer21Size)
404cdf0e10cSrcweir #endif
405cdf0e10cSrcweir@@ -6450,6 +6544,11 @@
406cdf0e10cSrcweir         return hRes;
407cdf0e10cSrcweir }
408cdf0e10cSrcweir
409cdf0e10cSrcweir+ATLINLINE void atlfinalleavecriticalsection(void *pData)
410cdf0e10cSrcweir+{
411cdf0e10cSrcweir+  LeaveCriticalSection(reinterpret_cast<LPCRITICAL_SECTION>(pData));
412cdf0e10cSrcweir+}
413cdf0e10cSrcweir+
414cdf0e10cSrcweir ATLINLINE ATLAPI AtlModuleGetClassObject(_ATL_MODULE* pM, REFCLSID rclsid, REFIID riid, LPVOID* ppv)
415cdf0e10cSrcweir {
416cdf0e10cSrcweir         ATLASSERT(pM != NULL);
417cdf0e10cSrcweir@@ -6473,15 +6572,15 @@
418cdf0e10cSrcweir                         if (pEntry->pCF == NULL)
419cdf0e10cSrcweir                         {
420cdf0e10cSrcweir                                 EnterCriticalSection(&pM->m_csObjMap);
421cdf0e10cSrcweir-                                __try
422cdf0e10cSrcweir+                                jmp_buf _sejmpbuf;
423cdf0e10cSrcweir+                                __SEHandler _sehandler;
424cdf0e10cSrcweir+                                if (__builtin_setjmp(_sejmpbuf) == 0)
425cdf0e10cSrcweir                                 {
426cdf0e10cSrcweir+                                        _sehandler.Set(_sejmpbuf, &pM->m_csObjMap, EXCEPTION_CONTINUE_SEARCH, NULL, atlfinalleavecriticalsection);
427cdf0e10cSrcweir                                         if (pEntry->pCF == NULL)
428cdf0e10cSrcweir-                                                hRes = pEntry->pfnGetClassObject(pEntry->pfnCreateInstance, IID_IUnknown, (LPVOID*)&pEntry->pCF);
429cdf0e10cSrcweir-                                }
430cdf0e10cSrcweir-                                __finally
431cdf0e10cSrcweir-                                {
432cdf0e10cSrcweir-                                        LeaveCriticalSection(&pM->m_csObjMap);
433cdf0e10cSrcweir+                       hRes = pEntry->pfnGetClassObject((void *)(pEntry->pfnCreateInstance), IID_IUnknown, (LPVOID*)&pEntry->pCF);
434cdf0e10cSrcweir                                 }
435cdf0e10cSrcweir+                                _sehandler.Reset();
436cdf0e10cSrcweir                         }
437cdf0e10cSrcweir                         if (pEntry->pCF != NULL)
438cdf0e10cSrcweir                                 hRes = pEntry->pCF->QueryInterface(riid, ppv);
439cdf0e10cSrcweir--- include/atl/atlcom.h.orig   2005-04-14 17:54:32.000000000 +0900
440cdf0e10cSrcweir+++ include/atl/atlcom.h    2007-12-03 22:43:54.833375000 +0900
441cdf0e10cSrcweir@@ -10,6 +10,9 @@
442cdf0e10cSrcweir
443cdf0e10cSrcweir #ifndef __ATLCOM_H__
444cdf0e10cSrcweir #define __ATLCOM_H__
445cdf0e10cSrcweir+#if __GNUC__ >=3
446cdf0e10cSrcweir+#pragma GCC system_header
447cdf0e10cSrcweir+#endif
448cdf0e10cSrcweir
449cdf0e10cSrcweir #ifndef __cplusplus
450cdf0e10cSrcweir         #error ATL requires C++ compilation (use a .cpp suffix)
451cdf0e10cSrcweir@@ -19,7 +22,10 @@
452cdf0e10cSrcweir         #error atlcom.h requires atlbase.h to be included first
453cdf0e10cSrcweir #endif
454cdf0e10cSrcweir
455cdf0e10cSrcweir-#pragma pack(push, _ATL_PACKING)
456cdf0e10cSrcweir+#include <algorithm>
457cdf0e10cSrcweir+using ::std::min;
458cdf0e10cSrcweir+
459cdf0e10cSrcweir+#pragma pack(push, 8)
460cdf0e10cSrcweir
461cdf0e10cSrcweir EXTERN_C const IID IID_ITargetFrame;
462cdf0e10cSrcweir
463cdf0e10cSrcweir@@ -2191,19 +2197,23 @@
464cdf0e10cSrcweir // override it in your class and call each base class' version of this
465cdf0e10cSrcweir #define BEGIN_COM_MAP(x) public: \
466cdf0e10cSrcweir         typedef x _ComMapClass; \
467cdf0e10cSrcweir+        static void _CacheFinal(void *pData)\
468cdf0e10cSrcweir+        {\
469cdf0e10cSrcweir+                reinterpret_cast<_ComMapClass*>(pData)->Unlock();\
470cdf0e10cSrcweir+        }\
471cdf0e10cSrcweir         static HRESULT WINAPI _Cache(void* pv, REFIID iid, void** ppvObject, DWORD_PTR dw)\
472cdf0e10cSrcweir         {\
473cdf0e10cSrcweir                 _ComMapClass* p = (_ComMapClass*)pv;\
474cdf0e10cSrcweir                 p->Lock();\
475cdf0e10cSrcweir                 HRESULT hRes = E_FAIL; \
476cdf0e10cSrcweir-                __try \
477cdf0e10cSrcweir+                jmp_buf _sejmpbuf; \
478cdf0e10cSrcweir+                __SEHandler _sehandler; \
479cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0) \
480cdf0e10cSrcweir                 { \
481cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, p, EXCEPTION_CONTINUE_SEARCH, NULL, _CacheFinal);\
482cdf0e10cSrcweir                         hRes = CComObjectRootBase::_Cache(pv, iid, ppvObject, dw);\
483cdf0e10cSrcweir                 } \
484cdf0e10cSrcweir-                __finally \
485cdf0e10cSrcweir-                { \
486cdf0e10cSrcweir-                        p->Unlock();\
487cdf0e10cSrcweir-                } \
488cdf0e10cSrcweir+                _sehandler.Reset();\
489cdf0e10cSrcweir                 return hRes;\
490cdf0e10cSrcweir         }\
491cdf0e10cSrcweir         IUnknown* _GetRawUnknown() \
492cdf0e10cSrcweir@@ -2339,7 +2349,7 @@
493cdf0e10cSrcweir    return( pMap ); }
494cdf0e10cSrcweir
495cdf0e10cSrcweir #define BEGIN_OBJECT_MAP(x) static _ATL_OBJMAP_ENTRY x[] = {
496cdf0e10cSrcweir-#define END_OBJECT_MAP()   {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}};
497cdf0e10cSrcweir+#define END_OBJECT_MAP()   {NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL}};
498cdf0e10cSrcweir #define OBJECT_ENTRY(clsid, class) {&clsid, class::UpdateRegistry, class::_ClassFactoryCreatorClass::CreateInstance, class::_CreatorClass::CreateInstance, NULL, 0, class::GetObjectDescription, class::GetCategoryMap, class::ObjectMain },
499cdf0e10cSrcweir #define OBJECT_ENTRY_NON_CREATEABLE(class) {&CLSID_NULL, class::UpdateRegistry, NULL, NULL, NULL, 0, NULL, class::GetCategoryMap, class::ObjectMain },
500cdf0e10cSrcweir
501cdf0e10cSrcweir@@ -2492,9 +2502,9 @@
502cdf0e10cSrcweir public:
503cdf0e10cSrcweir         typedef ThreadModel _ThreadModel;
504cdf0e10cSrcweir #ifdef OLD_ATL_CRITSEC_CODE
505cdf0e10cSrcweir-        typename typedef _ThreadModel::AutoCriticalSection _CritSec;
506cdf0e10cSrcweir+        typedef typename _ThreadModel::AutoCriticalSection _CritSec;
507cdf0e10cSrcweir #else
508cdf0e10cSrcweir-       typename typedef _ThreadModel::AutoDeleteCriticalSection _AutoDelCritSec;
509cdf0e10cSrcweir+       typedef typename _ThreadModel::AutoDeleteCriticalSection _AutoDelCritSec;
510cdf0e10cSrcweir #endif  /* OLD_ATL_CRITSEC_CODE */
511cdf0e10cSrcweir         typedef CComObjectLockT<_ThreadModel> ObjectLock;
512cdf0e10cSrcweir
513cdf0e10cSrcweir@@ -2638,8 +2648,8 @@
514cdf0e10cSrcweir         // Set refcount to 1 to protect destruction
515cdf0e10cSrcweir         ~CComObject()
516cdf0e10cSrcweir         {
517cdf0e10cSrcweir-                m_dwRef = 1L;
518cdf0e10cSrcweir-                FinalRelease();
519cdf0e10cSrcweir+                this->m_dwRef = 1L;
520cdf0e10cSrcweir+                this->FinalRelease();
521cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
522cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(_GetRawUnknown());
523cdf0e10cSrcweir #endif
524cdf0e10cSrcweir@@ -2647,22 +2657,24 @@
525cdf0e10cSrcweir         }
526cdf0e10cSrcweir         //If InternalAddRef or InternalRelease is undefined then your class
527cdf0e10cSrcweir         //doesn't derive from CComObjectRoot
528cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();}
529cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();}
530cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
531cdf0e10cSrcweir         {
532cdf0e10cSrcweir-                ULONG l = InternalRelease();
533cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
534cdf0e10cSrcweir                 if (l == 0)
535cdf0e10cSrcweir                         delete this;
536cdf0e10cSrcweir                 return l;
537cdf0e10cSrcweir         }
538cdf0e10cSrcweir         //if _InternalQueryInterface is undefined then you forgot BEGIN_COM_MAP
539cdf0e10cSrcweir         STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject)
540cdf0e10cSrcweir-        {return _InternalQueryInterface(iid, ppvObject);}
541cdf0e10cSrcweir+        {return this->_InternalQueryInterface(iid, ppvObject);}
542cdf0e10cSrcweir+#if 0
543cdf0e10cSrcweir         template <class Q>
544cdf0e10cSrcweir         HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp)
545cdf0e10cSrcweir         {
546cdf0e10cSrcweir                 return QueryInterface(__uuidof(Q), (void**)pp);
547cdf0e10cSrcweir         }
548cdf0e10cSrcweir+#endif
549cdf0e10cSrcweir
550cdf0e10cSrcweir         static HRESULT WINAPI CreateInstance(CComObject<Base>** pp);
551cdf0e10cSrcweir };
552cdf0e10cSrcweir@@ -2719,8 +2731,8 @@
553cdf0e10cSrcweir #endif  /* OLD_ATL_CRITSEC_CODE */
554cdf0e10cSrcweir         ~CComObjectCached()
555cdf0e10cSrcweir         {
556cdf0e10cSrcweir-                m_dwRef = 1L;
557cdf0e10cSrcweir-                FinalRelease();
558cdf0e10cSrcweir+                this->m_dwRef = 1L;
559cdf0e10cSrcweir+                this->FinalRelease();
560cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
561cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(_GetRawUnknown());
562cdf0e10cSrcweir #endif
563cdf0e10cSrcweir@@ -2729,14 +2741,14 @@
564cdf0e10cSrcweir         //doesn't derive from CComObjectRoot
565cdf0e10cSrcweir         STDMETHOD_(ULONG, AddRef)()
566cdf0e10cSrcweir         {
567cdf0e10cSrcweir-                ULONG l = InternalAddRef();
568cdf0e10cSrcweir+                ULONG l = this->InternalAddRef();
569cdf0e10cSrcweir                 if (l == 2)
570cdf0e10cSrcweir                         _Module.Lock();
571cdf0e10cSrcweir                 return l;
572cdf0e10cSrcweir         }
573cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
574cdf0e10cSrcweir         {
575cdf0e10cSrcweir-                ULONG l = InternalRelease();
576cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
577cdf0e10cSrcweir                 if (l == 0)
578cdf0e10cSrcweir                         delete this;
579cdf0e10cSrcweir                 else if (l == 1)
580cdf0e10cSrcweir@@ -2745,7 +2757,7 @@
581cdf0e10cSrcweir         }
582cdf0e10cSrcweir         //if _InternalQueryInterface is undefined then you forgot BEGIN_COM_MAP
583cdf0e10cSrcweir         STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject)
584cdf0e10cSrcweir-        {return _InternalQueryInterface(iid, ppvObject);}
585cdf0e10cSrcweir+        {return this->_InternalQueryInterface(iid, ppvObject);}
586cdf0e10cSrcweir #ifndef OLD_ATL_CRITSEC_CODE
587cdf0e10cSrcweir        CComGlobalsThreadModel::AutoDeleteCriticalSection m_csCached;
588cdf0e10cSrcweir #endif  /* OLD_ATL_CRITSEC_CODE */
589cdf0e10cSrcweir@@ -2762,8 +2774,8 @@
590cdf0e10cSrcweir         // Set refcount to 1 to protect destruction
591cdf0e10cSrcweir         ~CComObjectNoLock()
592cdf0e10cSrcweir         {
593cdf0e10cSrcweir-                m_dwRef = 1L;
594cdf0e10cSrcweir-                FinalRelease();
595cdf0e10cSrcweir+                this->m_dwRef = 1L;
596cdf0e10cSrcweir+                this->FinalRelease();
597cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
598cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(_GetRawUnknown());
599cdf0e10cSrcweir #endif
600cdf0e10cSrcweir@@ -2771,17 +2783,17 @@
601cdf0e10cSrcweir
602cdf0e10cSrcweir         //If InternalAddRef or InternalRelease is undefined then your class
603cdf0e10cSrcweir         //doesn't derive from CComObjectRoot
604cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();}
605cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();}
606cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
607cdf0e10cSrcweir         {
608cdf0e10cSrcweir-                ULONG l = InternalRelease();
609cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
610cdf0e10cSrcweir                 if (l == 0)
611cdf0e10cSrcweir                         delete this;
612cdf0e10cSrcweir                 return l;
613cdf0e10cSrcweir         }
614cdf0e10cSrcweir         //if _InternalQueryInterface is undefined then you forgot BEGIN_COM_MAP
615cdf0e10cSrcweir         STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject)
616cdf0e10cSrcweir-        {return _InternalQueryInterface(iid, ppvObject);}
617cdf0e10cSrcweir+        {return this->_InternalQueryInterface(iid, ppvObject);}
618cdf0e10cSrcweir };
619cdf0e10cSrcweir
620cdf0e10cSrcweir // It is possible for Base not to derive from CComObjectRoot
621cdf0e10cSrcweir@@ -2794,14 +2806,14 @@
622cdf0e10cSrcweir         CComObjectGlobal(void* = NULL)
623cdf0e10cSrcweir         {
624cdf0e10cSrcweir #ifndef OLD_ATL_CRITSEC_CODE
625cdf0e10cSrcweir-           m_hResFinalConstruct = _AtlInitialConstruct();
626cdf0e10cSrcweir+           m_hResFinalConstruct = this->_AtlInitialConstruct();
627cdf0e10cSrcweir            if (SUCCEEDED(m_hResFinalConstruct))
628cdf0e10cSrcweir #endif  /* OLD_ATL_CRITSEC_CODE */
629cdf0e10cSrcweir-                m_hResFinalConstruct = FinalConstruct();
630cdf0e10cSrcweir+                m_hResFinalConstruct = this->FinalConstruct();
631cdf0e10cSrcweir         }
632cdf0e10cSrcweir         ~CComObjectGlobal()
633cdf0e10cSrcweir         {
634cdf0e10cSrcweir-                FinalRelease();
635cdf0e10cSrcweir+                this->FinalRelease();
636cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
637cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(_GetRawUnknown());
638cdf0e10cSrcweir #endif
639cdf0e10cSrcweir@@ -2810,7 +2822,7 @@
640cdf0e10cSrcweir         STDMETHOD_(ULONG, AddRef)() {return _Module.Lock();}
641cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)(){return _Module.Unlock();}
642cdf0e10cSrcweir         STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject)
643cdf0e10cSrcweir-        {return _InternalQueryInterface(iid, ppvObject);}
644cdf0e10cSrcweir+        {return this->_InternalQueryInterface(iid, ppvObject);}
645cdf0e10cSrcweir         HRESULT m_hResFinalConstruct;
646cdf0e10cSrcweir };
647cdf0e10cSrcweir
648cdf0e10cSrcweir@@ -2824,14 +2836,14 @@
649cdf0e10cSrcweir         CComObjectStack(void* = NULL)
650cdf0e10cSrcweir         {
651cdf0e10cSrcweir #ifndef OLD_ATL_CRITSEC_CODE
652cdf0e10cSrcweir-           m_hResFinalConstruct = _AtlInitialConstruct();
653cdf0e10cSrcweir+           m_hResFinalConstruct = this->_AtlInitialConstruct();
654cdf0e10cSrcweir            if (SUCCEEDED(m_hResFinalConstruct))
655cdf0e10cSrcweir #endif  /* OLD_ATL_CRITSEC_CODE */
656cdf0e10cSrcweir-                m_hResFinalConstruct = FinalConstruct();
657cdf0e10cSrcweir+                m_hResFinalConstruct = this->FinalConstruct();
658cdf0e10cSrcweir         }
659cdf0e10cSrcweir         ~CComObjectStack()
660cdf0e10cSrcweir         {
661cdf0e10cSrcweir-                FinalRelease();
662cdf0e10cSrcweir+                this->FinalRelease();
663cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
664cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(_GetRawUnknown());
665cdf0e10cSrcweir #endif
666cdf0e10cSrcweir@@ -2850,6 +2862,8 @@
667cdf0e10cSrcweir {
668cdf0e10cSrcweir public:
669cdf0e10cSrcweir         typedef Base _BaseClass;
670cdf0e10cSrcweir+        using Base::_GetRawUnknown;
671cdf0e10cSrcweir+        using Base::m_pOuterUnknown;
672cdf0e10cSrcweir         CComContainedObject(void* pv) {m_pOuterUnknown = (IUnknown*)pv;}
673cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
674cdf0e10cSrcweir         ~CComContainedObject()
675cdf0e10cSrcweir@@ -2859,20 +2873,22 @@
676cdf0e10cSrcweir         }
677cdf0e10cSrcweir #endif
678cdf0e10cSrcweir
679cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return OuterAddRef();}
680cdf0e10cSrcweir-        STDMETHOD_(ULONG, Release)() {return OuterRelease();}
681cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->OuterAddRef();}
682cdf0e10cSrcweir+        STDMETHOD_(ULONG, Release)() {return this->OuterRelease();}
683cdf0e10cSrcweir         STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject)
684cdf0e10cSrcweir         {
685cdf0e10cSrcweir-                HRESULT hr = OuterQueryInterface(iid, ppvObject);
686cdf0e10cSrcweir+                HRESULT hr = this->OuterQueryInterface(iid, ppvObject);
687cdf0e10cSrcweir                 if (FAILED(hr) && _GetRawUnknown() != m_pOuterUnknown)
688cdf0e10cSrcweir-                        hr = _InternalQueryInterface(iid, ppvObject);
689cdf0e10cSrcweir+                        hr = this->_InternalQueryInterface(iid, ppvObject);
690cdf0e10cSrcweir                 return hr;
691cdf0e10cSrcweir         }
692cdf0e10cSrcweir+#if 0
693cdf0e10cSrcweir         template <class Q>
694cdf0e10cSrcweir         HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp)
695cdf0e10cSrcweir         {
696cdf0e10cSrcweir                 return QueryInterface(__uuidof(Q), (void**)pp);
697cdf0e10cSrcweir         }
698cdf0e10cSrcweir+#endif
699cdf0e10cSrcweir         //GetControllingUnknown may be virtual if the Base class has declared
700cdf0e10cSrcweir         //DECLARE_GET_CONTROLLING_UNKNOWN()
701cdf0e10cSrcweir         IUnknown* GetControllingUnknown()
702cdf0e10cSrcweir@@ -2915,18 +2931,18 @@
703cdf0e10cSrcweir         // override it in your class and call each base class' version of this
704cdf0e10cSrcweir         HRESULT FinalConstruct()
705cdf0e10cSrcweir         {
706cdf0e10cSrcweir-                CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
707cdf0e10cSrcweir+                CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
708cdf0e10cSrcweir                 return m_contained.FinalConstruct();
709cdf0e10cSrcweir         }
710cdf0e10cSrcweir         void FinalRelease()
711cdf0e10cSrcweir         {
712cdf0e10cSrcweir-                CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
713cdf0e10cSrcweir+                CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
714cdf0e10cSrcweir                 m_contained.FinalRelease();
715cdf0e10cSrcweir         }
716cdf0e10cSrcweir         // Set refcount to 1 to protect destruction
717cdf0e10cSrcweir         ~CComAggObject()
718cdf0e10cSrcweir         {
719cdf0e10cSrcweir-                m_dwRef = 1L;
720cdf0e10cSrcweir+                this->m_dwRef = 1L;
721cdf0e10cSrcweir                 FinalRelease();
722cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
723cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(this);
724cdf0e10cSrcweir@@ -2934,10 +2950,10 @@
725cdf0e10cSrcweir                 _Module.Unlock();
726cdf0e10cSrcweir         }
727cdf0e10cSrcweir
728cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();}
729cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();}
730cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
731cdf0e10cSrcweir         {
732cdf0e10cSrcweir-                ULONG l = InternalRelease();
733cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
734cdf0e10cSrcweir                 if (l == 0)
735cdf0e10cSrcweir                         delete this;
736cdf0e10cSrcweir                 return l;
737cdf0e10cSrcweir@@ -2959,11 +2975,13 @@
738cdf0e10cSrcweir                         hRes = m_contained._InternalQueryInterface(iid, ppvObject);
739cdf0e10cSrcweir                 return hRes;
740cdf0e10cSrcweir         }
741cdf0e10cSrcweir+#if 0
742cdf0e10cSrcweir         template <class Q>
743cdf0e10cSrcweir         HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp)
744cdf0e10cSrcweir         {
745cdf0e10cSrcweir                 return QueryInterface(__uuidof(Q), (void**)pp);
746cdf0e10cSrcweir         }
747cdf0e10cSrcweir+#endif
748cdf0e10cSrcweir         static HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, CComAggObject<contained>** pp)
749cdf0e10cSrcweir         {
750cdf0e10cSrcweir                 _ATL_VALIDATE_OUT_POINTER(pp);
751cdf0e10cSrcweir@@ -3023,21 +3041,21 @@
752cdf0e10cSrcweir         // override it in your class and call each base class' version of this
753cdf0e10cSrcweir         HRESULT FinalConstruct()
754cdf0e10cSrcweir         {
755cdf0e10cSrcweir-                InternalAddRef();
756cdf0e10cSrcweir-                CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
757cdf0e10cSrcweir+                this->InternalAddRef();
758cdf0e10cSrcweir+                CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
759cdf0e10cSrcweir                 HRESULT hr = m_contained.FinalConstruct();
760cdf0e10cSrcweir-                InternalRelease();
761cdf0e10cSrcweir+                this->InternalRelease();
762cdf0e10cSrcweir                 return hr;
763cdf0e10cSrcweir         }
764cdf0e10cSrcweir         void FinalRelease()
765cdf0e10cSrcweir         {
766cdf0e10cSrcweir-                CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
767cdf0e10cSrcweir+                CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
768cdf0e10cSrcweir                 m_contained.FinalRelease();
769cdf0e10cSrcweir         }
770cdf0e10cSrcweir         // Set refcount to 1 to protect destruction
771cdf0e10cSrcweir         ~CComPolyObject()
772cdf0e10cSrcweir         {
773cdf0e10cSrcweir-                m_dwRef = 1L;
774cdf0e10cSrcweir+                this->m_dwRef = 1L;
775cdf0e10cSrcweir                 FinalRelease();
776cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
777cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(this);
778cdf0e10cSrcweir@@ -3045,10 +3063,10 @@
779cdf0e10cSrcweir                 _Module.Unlock();
780cdf0e10cSrcweir         }
781cdf0e10cSrcweir
782cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();}
783cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();}
784cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
785cdf0e10cSrcweir         {
786cdf0e10cSrcweir-                ULONG l = InternalRelease();
787cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
788cdf0e10cSrcweir                 if (l == 0)
789cdf0e10cSrcweir                         delete this;
790cdf0e10cSrcweir                 return l;
791cdf0e10cSrcweir@@ -3072,11 +3090,13 @@
792cdf0e10cSrcweir                         hRes = m_contained._InternalQueryInterface(iid, ppvObject);
793cdf0e10cSrcweir                 return hRes;
794cdf0e10cSrcweir         }
795cdf0e10cSrcweir+#if 0
796cdf0e10cSrcweir         template <class Q>
797cdf0e10cSrcweir         HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp)
798cdf0e10cSrcweir         {
799cdf0e10cSrcweir                 return QueryInterface(__uuidof(Q), (void**)pp);
800cdf0e10cSrcweir         }
801cdf0e10cSrcweir+#endif
802cdf0e10cSrcweir         static HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, CComPolyObject<contained>** pp)
803cdf0e10cSrcweir         {
804cdf0e10cSrcweir                 _ATL_VALIDATE_OUT_POINTER(pp);
805cdf0e10cSrcweir@@ -3111,27 +3131,28 @@
806cdf0e10cSrcweir class CComTearOffObject : public Base
807cdf0e10cSrcweir {
808cdf0e10cSrcweir public:
809cdf0e10cSrcweir+        using Base::m_pOwner;
810cdf0e10cSrcweir         CComTearOffObject(void* pv)
811cdf0e10cSrcweir         {
812cdf0e10cSrcweir                 ATLASSERT(m_pOwner == NULL);
813cdf0e10cSrcweir-                m_pOwner = reinterpret_cast<CComObject<Base::_OwnerClass>*>(pv);
814cdf0e10cSrcweir+                m_pOwner = reinterpret_cast<CComObject<typename Base::_OwnerClass>*>(pv);
815cdf0e10cSrcweir                 m_pOwner->AddRef();
816cdf0e10cSrcweir         }
817cdf0e10cSrcweir         // Set refcount to 1 to protect destruction
818cdf0e10cSrcweir         ~CComTearOffObject()
819cdf0e10cSrcweir         {
820cdf0e10cSrcweir-                m_dwRef = 1L;
821cdf0e10cSrcweir-                FinalRelease();
822cdf0e10cSrcweir+                this->m_dwRef = 1L;
823cdf0e10cSrcweir+                this->FinalRelease();
824cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
825cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(_GetRawUnknown());
826cdf0e10cSrcweir #endif
827cdf0e10cSrcweir                 m_pOwner->Release();
828cdf0e10cSrcweir         }
829cdf0e10cSrcweir
830cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();}
831cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();}
832cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
833cdf0e10cSrcweir         {
834cdf0e10cSrcweir-                ULONG l = InternalRelease();
835cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
836cdf0e10cSrcweir                 if (l == 0)
837cdf0e10cSrcweir                         delete this;
838cdf0e10cSrcweir                 return l;
839cdf0e10cSrcweir@@ -3150,27 +3171,27 @@
840cdf0e10cSrcweir public:
841cdf0e10cSrcweir         typedef contained _BaseClass;
842cdf0e10cSrcweir         CComCachedTearOffObject(void* pv) :
843cdf0e10cSrcweir-                m_contained(((contained::_OwnerClass*)pv)->GetControllingUnknown())
844cdf0e10cSrcweir+                m_contained(((typename contained::_OwnerClass*)pv)->GetControllingUnknown())
845cdf0e10cSrcweir         {
846cdf0e10cSrcweir                 ATLASSERT(m_contained.m_pOwner == NULL);
847cdf0e10cSrcweir-                m_contained.m_pOwner = reinterpret_cast<CComObject<contained::_OwnerClass>*>(pv);
848cdf0e10cSrcweir+                m_contained.m_pOwner = reinterpret_cast<CComObject<typename contained::_OwnerClass>*>(pv);
849cdf0e10cSrcweir         }
850cdf0e10cSrcweir         //If you get a message that this call is ambiguous then you need to
851cdf0e10cSrcweir         // override it in your class and call each base class' version of this
852cdf0e10cSrcweir         HRESULT FinalConstruct()
853cdf0e10cSrcweir         {
854cdf0e10cSrcweir-                CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
855cdf0e10cSrcweir+                CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct();
856cdf0e10cSrcweir                 return m_contained.FinalConstruct();
857cdf0e10cSrcweir         }
858cdf0e10cSrcweir         void FinalRelease()
859cdf0e10cSrcweir         {
860cdf0e10cSrcweir-                CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
861cdf0e10cSrcweir+                CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalRelease();
862cdf0e10cSrcweir                 m_contained.FinalRelease();
863cdf0e10cSrcweir         }
864cdf0e10cSrcweir         // Set refcount to 1 to protect destruction
865cdf0e10cSrcweir         ~CComCachedTearOffObject()
866cdf0e10cSrcweir         {
867cdf0e10cSrcweir-                m_dwRef = 1L;
868cdf0e10cSrcweir+                this->m_dwRef = 1L;
869cdf0e10cSrcweir                 FinalRelease();
870cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
871cdf0e10cSrcweir                 _Module.DeleteNonAddRefThunk(this);
872cdf0e10cSrcweir@@ -3178,10 +3199,10 @@
873cdf0e10cSrcweir         }
874cdf0e10cSrcweir
875cdf0e10cSrcweir
876cdf0e10cSrcweir-        STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();}
877cdf0e10cSrcweir+        STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();}
878cdf0e10cSrcweir         STDMETHOD_(ULONG, Release)()
879cdf0e10cSrcweir         {
880cdf0e10cSrcweir-                ULONG l = InternalRelease();
881cdf0e10cSrcweir+                ULONG l = this->InternalRelease();
882cdf0e10cSrcweir                 if (l == 0)
883cdf0e10cSrcweir                         delete this;
884cdf0e10cSrcweir                 return l;
885cdf0e10cSrcweir@@ -3260,7 +3281,9 @@
886cdf0e10cSrcweir {
887cdf0e10cSrcweir public:
888cdf0e10cSrcweir         typedef license _LicenseClass;
889cdf0e10cSrcweir-        typedef CComClassFactory2<license> _ComMapClass;
890cdf0e10cSrcweir+        using license::IsLicenseValid;
891cdf0e10cSrcweir+        using license::GetLicenseKey;
892cdf0e10cSrcweir+//        typedef CComClassFactory2<license> _ComMapClass;
893cdf0e10cSrcweir BEGIN_COM_MAP(CComClassFactory2<license>)
894cdf0e10cSrcweir         COM_INTERFACE_ENTRY(IClassFactory)
895cdf0e10cSrcweir         COM_INTERFACE_ENTRY(IClassFactory2)
896cdf0e10cSrcweir@@ -3297,7 +3320,7 @@
897cdf0e10cSrcweir                 if (ppvObject == NULL)
898cdf0e10cSrcweir                         return E_POINTER;
899cdf0e10cSrcweir                 *ppvObject = NULL;
900cdf0e10cSrcweir-                if ( ((bstrKey != NULL) && !VerifyLicenseKey(bstrKey)) ||
901cdf0e10cSrcweir+                if ( ((bstrKey != NULL) && !this->VerifyLicenseKey(bstrKey)) ||
902cdf0e10cSrcweir                          ((bstrKey == NULL) && !IsLicenseValid()) )
903cdf0e10cSrcweir                         return CLASS_E_NOTLICENSED;
904cdf0e10cSrcweir                 if ((pUnkOuter != NULL) && !InlineIsEqualUnknown(riid))
905cdf0e10cSrcweir@@ -3363,7 +3386,7 @@
906cdf0e10cSrcweir                         if (pUnkOuter != NULL)
907cdf0e10cSrcweir                                 hRes = CLASS_E_NOAGGREGATION;
908cdf0e10cSrcweir                         else
909cdf0e10cSrcweir-                                hRes = _Module.CreateInstance(m_pfnCreateInstance, riid, ppvObj);
910cdf0e10cSrcweir+                                hRes = _Module.CreateInstance((LPVOID)m_pfnCreateInstance, riid, ppvObj);
911cdf0e10cSrcweir                 }
912cdf0e10cSrcweir                 return hRes;
913cdf0e10cSrcweir         }
914cdf0e10cSrcweir@@ -3454,6 +3477,7 @@
915cdf0e10cSrcweir                         lpszHelpFile, iid, hRes);
916cdf0e10cSrcweir         }
917cdf0e10cSrcweir #endif
918cdf0e10cSrcweir+#if 0
919cdf0e10cSrcweir         template <class Q>
920cdf0e10cSrcweir         static HRESULT CreateInstance(IUnknown* punkOuter, Q** pp)
921cdf0e10cSrcweir         {
922cdf0e10cSrcweir@@ -3464,6 +3488,7 @@
923cdf0e10cSrcweir         {
924cdf0e10cSrcweir                 return T::_CreatorClass::CreateInstance(NULL, __uuidof(Q), (void**) pp);
925cdf0e10cSrcweir         }
926cdf0e10cSrcweir+#endif
927cdf0e10cSrcweir };
928cdf0e10cSrcweir
929cdf0e10cSrcweir // ATL doesn't support multiple LCID's at the same time
930cdf0e10cSrcweir@@ -3651,7 +3676,7 @@
931cdf0e10cSrcweir                         {
932cdf0e10cSrcweir                                 CComPtr<ITypeInfo> spInfo(spTypeInfo);
933cdf0e10cSrcweir                                 CComPtr<ITypeInfo2> spTypeInfo2;
934cdf0e10cSrcweir-                                if (SUCCEEDED(spTypeInfo->QueryInterface(&spTypeInfo2)))
935cdf0e10cSrcweir+                                if (SUCCEEDED(spTypeInfo->QueryInterface(IID_ITypeInfo2, (void**)&spTypeInfo2)))
936cdf0e10cSrcweir                                         spInfo = spTypeInfo2;
937cdf0e10cSrcweir
938cdf0e10cSrcweir                                 m_pInfo = spInfo.Detach();
939cdf0e10cSrcweir@@ -3760,6 +3785,9 @@
940cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////////
941cdf0e10cSrcweir // IDispEventImpl
942cdf0e10cSrcweir
943cdf0e10cSrcweir+template <class T>
944cdf0e10cSrcweir+struct _ATL_EVENT_ENTRY;
945cdf0e10cSrcweir+
946cdf0e10cSrcweir #ifdef _ATL_DLL
947cdf0e10cSrcweir ATLAPI AtlGetObjectSourceInterface(IUnknown* punkObj, GUID* plibid, IID* piid, unsigned short* pdwMajor, unsigned short* pdwMinor);
948cdf0e10cSrcweir #else
949cdf0e10cSrcweir@@ -3909,16 +3937,17 @@
950cdf0e10cSrcweir #else
951cdf0e10cSrcweir
952cdf0e10cSrcweir #pragma warning(disable:4740)       // flow in/out of inline disables global opts
953cdf0e10cSrcweir-inline void __declspec(naked) __stdcall CComStdCallThunkHelper()
954cdf0e10cSrcweir+inline void __stdcall CComStdCallThunkHelper()
955cdf0e10cSrcweir {
956cdf0e10cSrcweir-        __asm
957cdf0e10cSrcweir-        {
958cdf0e10cSrcweir-                mov eax, [esp+4];       // get pThunk
959cdf0e10cSrcweir-                mov edx, [eax+4];       // get the pThunk->pThis
960cdf0e10cSrcweir-                mov [esp+4], edx;       // replace pThunk with pThis
961cdf0e10cSrcweir-                mov eax, [eax+8];       // get pThunk->pfn
962cdf0e10cSrcweir-                jmp eax;                // jump pfn
963cdf0e10cSrcweir-        };
964cdf0e10cSrcweir+  asm(
965cdf0e10cSrcweir+      " movl $8(%ebp), %eax\n"       // get pThunk
966cdf0e10cSrcweir+      " movl $4(%eax), edx\n"       // get the pThunk->pThis
967cdf0e10cSrcweir+      " movl %edx, $8(%ebp)\n"       // replace pThunk with pThis
968cdf0e10cSrcweir+      " movl $8(%eax), %eax\n"       // get pThunk->pfn
969cdf0e10cSrcweir+      "    movl %ebp, %esp\n"
970cdf0e10cSrcweir+      "    popl %ebp\n"
971cdf0e10cSrcweir+      "    jmp %eax"                // jump pfn
972cdf0e10cSrcweir+      );
973cdf0e10cSrcweir }
974cdf0e10cSrcweir #pragma warning(default:4740)
975cdf0e10cSrcweir #endif
976cdf0e10cSrcweir@@ -3985,6 +4014,7 @@
977cdf0e10cSrcweir class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid>
978cdf0e10cSrcweir {
979cdf0e10cSrcweir public:
980cdf0e10cSrcweir+        using _IDispEventLocator<nID, pdiid>::m_dwEventCookie;
981cdf0e10cSrcweir         STDMETHOD(_LocDEQueryInterface)(REFIID riid, void ** ppvObject)
982cdf0e10cSrcweir         {
983cdf0e10cSrcweir                 _ATL_VALIDATE_OUT_POINTER(ppvObject);
984cdf0e10cSrcweir@@ -3992,7 +4022,7 @@
985cdf0e10cSrcweir                 if (InlineIsEqualGUID(riid, *pdiid) ||
986cdf0e10cSrcweir                         InlineIsEqualUnknown(riid) ||
987cdf0e10cSrcweir                         InlineIsEqualGUID(riid, IID_IDispatch) ||
988cdf0e10cSrcweir-                        InlineIsEqualGUID(riid, m_iid))
989cdf0e10cSrcweir+                        InlineIsEqualGUID(riid, this->m_iid))
990cdf0e10cSrcweir                 {
991cdf0e10cSrcweir                         *ppvObject = this;
992cdf0e10cSrcweir                         AddRef();
993cdf0e10cSrcweir@@ -4186,6 +4216,10 @@
994cdf0e10cSrcweir {
995cdf0e10cSrcweir public:
996cdf0e10cSrcweir         typedef tihclass _tihclass;
997cdf0e10cSrcweir+        using IDispEventSimpleImpl<nID, T, pdiid>::m_libid;
998cdf0e10cSrcweir+        using IDispEventSimpleImpl<nID, T, pdiid>::m_iid;
999cdf0e10cSrcweir+        using IDispEventSimpleImpl<nID, T, pdiid>::m_wMajorVerNum;
1000cdf0e10cSrcweir+        using IDispEventSimpleImpl<nID, T, pdiid>::m_wMinorVerNum;
1001cdf0e10cSrcweir
1002cdf0e10cSrcweir         IDispEventImpl()
1003cdf0e10cSrcweir         {
1004cdf0e10cSrcweir@@ -4475,6 +4509,11 @@
1005cdf0e10cSrcweir         }
1006cdf0e10cSrcweir };
1007cdf0e10cSrcweir
1008cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class ThreadModel = CComObjectThreadModel>
1009cdf0e10cSrcweir+class ATL_NO_VTABLE CComEnum;
1010cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class CollType, class ThreadModel = CComObjectThreadModel>
1011cdf0e10cSrcweir+class ATL_NO_VTABLE CComEnumOnSTL;
1012cdf0e10cSrcweir+
1013cdf0e10cSrcweir
1014cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////////
1015cdf0e10cSrcweir // CComEnumImpl
1016cdf0e10cSrcweir@@ -4746,7 +4785,7 @@
1017cdf0e10cSrcweir         return S_OK;
1018cdf0e10cSrcweir }
1019cdf0e10cSrcweir
1020cdf0e10cSrcweir-template <class Base, const IID* piid, class T, class Copy, class ThreadModel = CComObjectThreadModel>
1021cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class ThreadModel>
1022cdf0e10cSrcweir class ATL_NO_VTABLE CComEnum :
1023cdf0e10cSrcweir         public CComEnumImpl<Base, piid, T, Copy>,
1024cdf0e10cSrcweir         public CComObjectRootEx< ThreadModel >
1025cdf0e10cSrcweir@@ -4868,7 +4907,7 @@
1026cdf0e10cSrcweir         return hRes;
1027cdf0e10cSrcweir }
1028cdf0e10cSrcweir
1029cdf0e10cSrcweir-template <class Base, const IID* piid, class T, class Copy, class CollType, class ThreadModel = CComObjectThreadModel>
1030cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class CollType, class ThreadModel>
1031cdf0e10cSrcweir class ATL_NO_VTABLE CComEnumOnSTL :
1032cdf0e10cSrcweir         public IEnumOnSTLImpl<Base, piid, T, Copy, CollType>,
1033cdf0e10cSrcweir         public CComObjectRootEx< ThreadModel >
1034cdf0e10cSrcweir@@ -4901,7 +4940,7 @@
1035cdf0e10cSrcweir                         return E_INVALIDARG;
1036cdf0e10cSrcweir                 HRESULT hr = E_FAIL;
1037cdf0e10cSrcweir                 Index--;
1038cdf0e10cSrcweir-                CollType::iterator iter = m_coll.begin();
1039cdf0e10cSrcweir+                typename CollType::iterator iter = m_coll.begin();
1040cdf0e10cSrcweir                 while (iter != m_coll.end() && Index > 0)
1041cdf0e10cSrcweir                 {
1042cdf0e10cSrcweir                         iter++;
1043cdf0e10cSrcweir@@ -5314,7 +5353,7 @@
1044cdf0e10cSrcweir                 if (InlineIsEqualGUID(riid, IID_IConnectionPoint) || InlineIsEqualUnknown(riid))
1045cdf0e10cSrcweir                 {
1046cdf0e10cSrcweir                         *ppvObject = this;
1047cdf0e10cSrcweir-                        AddRef();
1048cdf0e10cSrcweir+                        this->AddRef();
1049cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES
1050cdf0e10cSrcweir                         _Module.AddThunk((IUnknown**)ppvObject, _T("IConnectionPointImpl"), riid);
1051cdf0e10cSrcweir #endif // _ATL_DEBUG_INTERFACES
1052cdf0e10cSrcweir--- include/atl/atlconv.h.orig  2005-04-14 17:54:32.000000000 +0900
1053cdf0e10cSrcweir+++ include/atl/atlconv.h   2007-12-31 07:29:34.759750000 +0900
1054cdf0e10cSrcweir@@ -10,6 +10,9 @@
1055cdf0e10cSrcweir
1056cdf0e10cSrcweir #ifndef __ATLCONV_H__
1057cdf0e10cSrcweir #define __ATLCONV_H__
1058cdf0e10cSrcweir+#if __GNUC__ >=3
1059cdf0e10cSrcweir+#pragma GCC system_header
1060cdf0e10cSrcweir+#endif
1061cdf0e10cSrcweir
1062cdf0e10cSrcweir #ifndef __cplusplus
1063cdf0e10cSrcweir         #error ATL requires C++ compilation (use a .cpp suffix)
1064cdf0e10cSrcweir@@ -30,7 +33,11 @@
1065cdf0e10cSrcweir // Following code is to avoid alloca causing a stack overflow.
1066cdf0e10cSrcweir // It is intended for use from the _ATL_SAFE_ALLOCA macros
1067cdf0e10cSrcweir // or Conversion macros.
1068cdf0e10cSrcweir-__declspec(selectany) DWORD _Atlosplatform = 0;
1069cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
1070cdf0e10cSrcweir+DWORD _Atlosplatform = 0;
1071cdf0e10cSrcweir+#else
1072cdf0e10cSrcweir+extern DWORD _Atlosplatform;
1073cdf0e10cSrcweir+#endif
1074cdf0e10cSrcweir inline BOOL _AtlGetVersionEx()
1075cdf0e10cSrcweir {
1076cdf0e10cSrcweir         OSVERSIONINFO osi;
1077cdf0e10cSrcweir@@ -156,8 +163,11 @@
1078cdf0e10cSrcweir #pragma prefast(suppress:515, "Atlresetstkoflw is the same as resetstkoflw")
1079cdf0e10cSrcweir
1080cdf0e10cSrcweir // Verifies if sufficient space is available on the stack.
1081cdf0e10cSrcweir-inline bool _AtlVerifyStackAvailable(SIZE_T Size)
1082cdf0e10cSrcweir+inline bool _AtlVerifyStackAvailable(SIZE_T /*Size*/)
1083cdf0e10cSrcweir {
1084cdf0e10cSrcweir+#if 1
1085cdf0e10cSrcweir+    return false;
1086cdf0e10cSrcweir+#else
1087cdf0e10cSrcweir     bool bStackAvailable = true;
1088cdf0e10cSrcweir
1089cdf0e10cSrcweir     __try
1090cdf0e10cSrcweir@@ -173,6 +183,7 @@
1091cdf0e10cSrcweir         _Atlresetstkoflw();
1092cdf0e10cSrcweir     }
1093cdf0e10cSrcweir     return bStackAvailable;
1094cdf0e10cSrcweir+#endif
1095cdf0e10cSrcweir }
1096cdf0e10cSrcweir
1097cdf0e10cSrcweir #pragma prefast(pop)
1098cdf0e10cSrcweir@@ -281,15 +292,15 @@
1099cdf0e10cSrcweir
1100cdf0e10cSrcweir #ifdef _CONVERSION_USES_THREAD_LOCALE
1101cdf0e10cSrcweir         #ifndef _DEBUG
1102cdf0e10cSrcweir-                #define USES_CONVERSION int _convert; _convert; UINT _acp = GetACP(); _acp; LPCWSTR _lpw; _lpw; LPCSTR _lpa; _lpa
1103cdf0e10cSrcweir+                #define USES_CONVERSION int _convert; (void)_convert; UINT _acp = GetACP(); (void)_acp; LPCWSTR _lpw; (void)_lpw; LPCSTR _lpa; (void)_lpa
1104cdf0e10cSrcweir         #else
1105cdf0e10cSrcweir-                #define USES_CONVERSION int _convert = 0; _convert; UINT _acp = GetACP(); _acp; LPCWSTR _lpw = NULL; _lpw; LPCSTR _lpa = NULL; _lpa
1106cdf0e10cSrcweir+                #define USES_CONVERSION int _convert = 0; (void)_convert; UINT _acp = GetACP(); (void)_acp; LPCWSTR _lpw = NULL; (void)_lpw; LPCSTR _lpa = NULL; (void)_lpa
1107cdf0e10cSrcweir         #endif
1108cdf0e10cSrcweir #else
1109cdf0e10cSrcweir         #ifndef _DEBUG
1110cdf0e10cSrcweir-                #define USES_CONVERSION int _convert; _convert; UINT _acp = CP_ACP; _acp; LPCWSTR _lpw; _lpw; LPCSTR _lpa; _lpa
1111cdf0e10cSrcweir+                #define USES_CONVERSION int _convert; (void)_convert; UINT _acp = CP_ACP; (void)_acp; LPCWSTR _lpw; (void)_lpw; LPCSTR _lpa; (void)_lpa
1112cdf0e10cSrcweir         #else
1113cdf0e10cSrcweir-                #define USES_CONVERSION int _convert = 0; _convert; UINT _acp = CP_ACP; _acp; LPCWSTR _lpw = NULL; _lpw; LPCSTR _lpa = NULL; _lpa
1114cdf0e10cSrcweir+                #define USES_CONVERSION int _convert = 0; (void)_convert; UINT _acp = CP_ACP; (void)_acp; LPCWSTR _lpw = NULL; (void)_lpw; LPCSTR _lpa = NULL; (void)_lpa
1115cdf0e10cSrcweir         #endif
1116cdf0e10cSrcweir #endif
1117cdf0e10cSrcweir
1118cdf0e10cSrcweir--- include/atl/atlctl.h.orig   2005-04-14 17:54:32.000000000 +0900
1119cdf0e10cSrcweir+++ include/atl/atlctl.h    2009-04-19 13:31:15.146000000 +0900
1120cdf0e10cSrcweir@@ -10,6 +10,9 @@
1121cdf0e10cSrcweir
1122cdf0e10cSrcweir #ifndef __ATLCTL_H__
1123cdf0e10cSrcweir #define __ATLCTL_H__
1124cdf0e10cSrcweir+#if __GNUC__ >=3
1125cdf0e10cSrcweir+#pragma GCC system_header
1126cdf0e10cSrcweir+#endif
1127cdf0e10cSrcweir
1128cdf0e10cSrcweir #ifndef __cplusplus
1129cdf0e10cSrcweir         #error ATL requires C++ compilation (use a .cpp suffix)
1130cdf0e10cSrcweir@@ -57,7 +60,7 @@
1131cdf0e10cSrcweir namespace ATL
1132cdf0e10cSrcweir {
1133cdf0e10cSrcweir
1134cdf0e10cSrcweir-#pragma pack(push, _ATL_PACKING)
1135cdf0e10cSrcweir+#pragma pack(push, 8)
1136cdf0e10cSrcweir
1137cdf0e10cSrcweir // Forward declarations
1138cdf0e10cSrcweir //
1139cdf0e10cSrcweir@@ -142,7 +145,9 @@
1140cdf0e10cSrcweir         CComControlBase(HWND& h) : m_hWndCD(h)
1141cdf0e10cSrcweir         {
1142cdf0e10cSrcweir                 memset(this, 0, sizeof(CComControlBase));
1143cdf0e10cSrcweir-                m_phWndCD = &h;
1144cdf0e10cSrcweir+       // previous element of m_hWndCD in this class is m_rcPos
1145cdf0e10cSrcweir+       *reinterpret_cast<HWND **>(reinterpret_cast<DWORD>(reinterpret_cast<char *>(&m_rcPos)+sizeof(m_rcPos)+(__alignof__(m_hWndCD)-1))&(-(__alignof__(m_hWndCD))))=&h;
1146cdf0e10cSrcweir+//                m_phWndCD = &h;
1147cdf0e10cSrcweir                 m_sizeExtent.cx = 2*2540;
1148cdf0e10cSrcweir                 m_sizeExtent.cy = 2*2540;
1149cdf0e10cSrcweir                 m_sizeNatural = m_sizeExtent;
1150cdf0e10cSrcweir@@ -530,13 +535,13 @@
1151cdf0e10cSrcweir         SIZE m_sizeNatural; //unscaled size in himetric
1152cdf0e10cSrcweir         SIZE m_sizeExtent;  //current extents in himetric
1153cdf0e10cSrcweir         RECT m_rcPos; // position in pixels
1154cdf0e10cSrcweir-#pragma warning(disable: 4510 4610) // unnamed union
1155cdf0e10cSrcweir-        union
1156cdf0e10cSrcweir-        {
1157cdf0e10cSrcweir+//#pragma warning(disable: 4510 4610) // unnamed union
1158cdf0e10cSrcweir+//        union
1159cdf0e10cSrcweir+//        {
1160cdf0e10cSrcweir                 HWND& m_hWndCD;
1161cdf0e10cSrcweir-                HWND* m_phWndCD;
1162cdf0e10cSrcweir-        };
1163cdf0e10cSrcweir-#pragma warning(default: 4510 4610)
1164cdf0e10cSrcweir+//                HWND* m_phWndCD;
1165cdf0e10cSrcweir+//        };
1166cdf0e10cSrcweir+//#pragma warning(default: 4510 4610)
1167cdf0e10cSrcweir         union
1168cdf0e10cSrcweir         {
1169cdf0e10cSrcweir                 // m_nFreezeEvents is the only one actually used
1170cdf0e10cSrcweir@@ -1362,7 +1367,7 @@
1171cdf0e10cSrcweir class ATL_NO_VTABLE CComControl :  public CComControlBase, public WinBase
1172cdf0e10cSrcweir {
1173cdf0e10cSrcweir public:
1174cdf0e10cSrcweir-        CComControl() : CComControlBase(m_hWnd) {}
1175cdf0e10cSrcweir+        CComControl() : CComControlBase(this->m_hWnd) {}
1176cdf0e10cSrcweir         HRESULT FireOnRequestEdit(DISPID dispID)
1177cdf0e10cSrcweir         {
1178cdf0e10cSrcweir                 T* pT = static_cast<T*>(this);
1179cdf0e10cSrcweir@@ -1401,6 +1406,8 @@
1180cdf0e10cSrcweir class CComCompositeControl : public CComControl< T, CAxDialogImpl< T > >
1181cdf0e10cSrcweir {
1182cdf0e10cSrcweir public:
1183cdf0e10cSrcweir+        using CComControl< T, CAxDialogImpl< T > >::m_hWnd;
1184cdf0e10cSrcweir+        using CComControl< T, CAxDialogImpl< T > >::GetNextDlgTabItem;
1185cdf0e10cSrcweir         CComCompositeControl()
1186cdf0e10cSrcweir         {
1187cdf0e10cSrcweir                 m_hbrBackground = NULL;
1188cdf0e10cSrcweir@@ -1429,7 +1436,7 @@
1189cdf0e10cSrcweir                         m_hbrBackground = NULL;
1190cdf0e10cSrcweir                 }
1191cdf0e10cSrcweir                 OLE_COLOR clr;
1192cdf0e10cSrcweir-                HRESULT hr = GetAmbientBackColor(clr);
1193cdf0e10cSrcweir+                HRESULT hr = this->GetAmbientBackColor(clr);
1194cdf0e10cSrcweir                 if (SUCCEEDED(hr))
1195cdf0e10cSrcweir                 {
1196cdf0e10cSrcweir                         COLORREF rgb;
1197cdf0e10cSrcweir@@ -1443,7 +1450,7 @@
1198cdf0e10cSrcweir         {
1199cdf0e10cSrcweir                 CAxWindow wnd(hwnd);
1200cdf0e10cSrcweir                 CComPtr<IAxWinAmbientDispatch> spDispatch;
1201cdf0e10cSrcweir-                wnd.QueryHost(&spDispatch);
1202cdf0e10cSrcweir+                wnd.QueryHost(IID_IAxWinAmbientDispatch, (void**)&spDispatch);
1203cdf0e10cSrcweir                 if (spDispatch != NULL)
1204cdf0e10cSrcweir                         spDispatch->put_BackColor((OLE_COLOR)l);
1205cdf0e10cSrcweir                 return TRUE;
1206cdf0e10cSrcweir@@ -1458,10 +1465,10 @@
1207cdf0e10cSrcweir         }
1208cdf0e10cSrcweir         HWND Create(HWND hWndParent, RECT& /*rcPos*/, LPARAM dwInitParam = NULL)
1209cdf0e10cSrcweir         {
1210cdf0e10cSrcweir-                CComControl< T, CAxDialogImpl< T > >::Create(hWndParent, dwInitParam);
1211cdf0e10cSrcweir+                this->Create(hWndParent, dwInitParam);
1212cdf0e10cSrcweir                 SetBackgroundColorFromAmbient();
1213cdf0e10cSrcweir                 if (m_hWnd != NULL)
1214cdf0e10cSrcweir-                        ShowWindow(SW_SHOWNOACTIVATE);
1215cdf0e10cSrcweir+                        this->ShowWindow(SW_SHOWNOACTIVATE);
1216cdf0e10cSrcweir                 return m_hWnd;
1217cdf0e10cSrcweir         }
1218cdf0e10cSrcweir         BOOL CalcExtent(SIZE& size)
1219cdf0e10cSrcweir@@ -1488,7 +1495,7 @@
1220cdf0e10cSrcweir                         return FALSE;
1221cdf0e10cSrcweir                 // find a direct child of the dialog from the window that has focus
1222cdf0e10cSrcweir                 HWND hWndCtl = ::GetFocus();
1223cdf0e10cSrcweir-                if (IsChild(hWndCtl) && ::GetParent(hWndCtl) != m_hWnd)
1224cdf0e10cSrcweir+                if (this->IsChild(hWndCtl) && ::GetParent(hWndCtl) != m_hWnd)
1225cdf0e10cSrcweir                 {
1226cdf0e10cSrcweir                         do
1227cdf0e10cSrcweir                         {
1228cdf0e10cSrcweir@@ -1546,7 +1553,7 @@
1229cdf0e10cSrcweir                         break;
1230cdf0e10cSrcweir                 }
1231cdf0e10cSrcweir
1232cdf0e10cSrcweir-                return IsDialogMessage(pMsg);
1233cdf0e10cSrcweir+                return this->IsDialogMessage(pMsg);
1234cdf0e10cSrcweir         }
1235cdf0e10cSrcweir         HRESULT IOleInPlaceObject_InPlaceDeactivate(void)
1236cdf0e10cSrcweir         {
1237cdf0e10cSrcweir@@ -1563,7 +1570,7 @@
1238cdf0e10cSrcweir         }
1239cdf0e10cSrcweir         virtual HRESULT OnDraw(ATL_DRAWINFO& di)
1240cdf0e10cSrcweir         {
1241cdf0e10cSrcweir-                if(!m_bInPlaceActive)
1242cdf0e10cSrcweir+                if(!this->m_bInPlaceActive)
1243cdf0e10cSrcweir                 {
1244cdf0e10cSrcweir                         HPEN hPen = (HPEN)::GetStockObject(BLACK_PEN);
1245cdf0e10cSrcweir                         HBRUSH hBrush = (HBRUSH)::GetStockObject(GRAY_BRUSH);
1246cdf0e10cSrcweir@@ -1626,7 +1633,7 @@
1247cdf0e10cSrcweir         }
1248cdf0e10cSrcweir         STDMETHOD(OnAmbientPropertyChange)(DISPID dispid)
1249cdf0e10cSrcweir         {
1250cdf0e10cSrcweir-                dispid;
1251cdf0e10cSrcweir+                (void)dispid;
1252cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("IOleControlImpl::OnAmbientPropertyChange\n"));
1253cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T(" -- DISPID = %d (%d)\n"), dispid);
1254cdf0e10cSrcweir                 return S_OK;
1255cdf0e10cSrcweir@@ -2905,7 +2912,7 @@
1256cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("~CBindStatusCallback\n"));
1257cdf0e10cSrcweir         }
1258cdf0e10cSrcweir
1259cdf0e10cSrcweir-        STDMETHOD(OnStartBinding)(DWORD dwReserved, IBinding *pBinding)
1260cdf0e10cSrcweir+        STDMETHOD(OnStartBinding)(DWORD /*dwReserved*/, IBinding *pBinding)
1261cdf0e10cSrcweir         {
1262cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnStartBinding\n"));
1263cdf0e10cSrcweir                 m_spBinding = pBinding;
1264cdf0e10cSrcweir@@ -2923,19 +2930,19 @@
1265cdf0e10cSrcweir                 return S_OK;
1266cdf0e10cSrcweir         }
1267cdf0e10cSrcweir
1268cdf0e10cSrcweir-        STDMETHOD(OnLowResource)(DWORD reserved)
1269cdf0e10cSrcweir+        STDMETHOD(OnLowResource)(DWORD /*reserved*/)
1270cdf0e10cSrcweir         {
1271cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnLowResource"));
1272cdf0e10cSrcweir                 return S_OK;
1273cdf0e10cSrcweir         }
1274cdf0e10cSrcweir
1275cdf0e10cSrcweir-        STDMETHOD(OnProgress)(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
1276cdf0e10cSrcweir+        STDMETHOD(OnProgress)(ULONG /*ulProgress*/, ULONG /*ulProgressMax*/, ULONG /*ulStatusCode*/, LPCWSTR /*szStatusText*/)
1277cdf0e10cSrcweir         {
1278cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnProgress"));
1279cdf0e10cSrcweir                 return S_OK;
1280cdf0e10cSrcweir         }
1281cdf0e10cSrcweir
1282cdf0e10cSrcweir-        STDMETHOD(OnStopBinding)(HRESULT hresult, LPCWSTR szError)
1283cdf0e10cSrcweir+        STDMETHOD(OnStopBinding)(HRESULT /*hresult*/, LPCWSTR /*szError*/)
1284cdf0e10cSrcweir         {
1285cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnStopBinding\n"));
1286cdf0e10cSrcweir                 (m_pT->*m_pFunc)(this, NULL, 0);
1287cdf0e10cSrcweir@@ -2962,7 +2969,7 @@
1288cdf0e10cSrcweir                 return S_OK;
1289cdf0e10cSrcweir         }
1290cdf0e10cSrcweir
1291cdf0e10cSrcweir-        STDMETHOD(OnDataAvailable)(DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed)
1292cdf0e10cSrcweir+        STDMETHOD(OnDataAvailable)(DWORD grfBSCF, DWORD dwSize, FORMATETC */*pformatetc*/, STGMEDIUM *pstgmed)
1293cdf0e10cSrcweir         {
1294cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnDataAvailable\n"));
1295cdf0e10cSrcweir                 HRESULT hr = S_OK;
1296cdf0e10cSrcweir@@ -3005,7 +3012,7 @@
1297cdf0e10cSrcweir                 return hr;
1298cdf0e10cSrcweir         }
1299cdf0e10cSrcweir
1300cdf0e10cSrcweir-        STDMETHOD(OnObjectAvailable)(REFIID riid, IUnknown *punk)
1301cdf0e10cSrcweir+        STDMETHOD(OnObjectAvailable)(REFIID /*riid*/, IUnknown */*punk*/)
1302cdf0e10cSrcweir         {
1303cdf0e10cSrcweir                 ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnObjectAvailable"));
1304cdf0e10cSrcweir                 return S_OK;
1305cdf0e10cSrcweir--- include/atl/atlwin.h.orig   2005-04-14 17:54:32.000000000 +0900
1306cdf0e10cSrcweir+++ include/atl/atlwin.h    2007-12-31 07:29:28.525375000 +0900
1307cdf0e10cSrcweir@@ -10,6 +10,9 @@
1308cdf0e10cSrcweir
1309cdf0e10cSrcweir #ifndef __ATLWIN_H__
1310cdf0e10cSrcweir #define __ATLWIN_H__
1311cdf0e10cSrcweir+#if __GNUC__ >=3
1312cdf0e10cSrcweir+#pragma GCC system_header
1313cdf0e10cSrcweir+#endif
1314cdf0e10cSrcweir
1315cdf0e10cSrcweir #ifndef __cplusplus
1316cdf0e10cSrcweir         #error ATL requires C++ compilation (use a .cpp suffix)
1317cdf0e10cSrcweir@@ -99,6 +102,8 @@
1318cdf0e10cSrcweir #else
1319cdf0e10cSrcweir #define CWndClassInfo CWndClassInfoA
1320cdf0e10cSrcweir #endif
1321cdf0e10cSrcweir+template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0> class CWinTraits;
1322cdf0e10cSrcweir+typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0>                                        CControlWinTraits;
1323cdf0e10cSrcweir template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits> class CWindowImpl;
1324cdf0e10cSrcweir template <class T, class TBase = CWindow> class CDialogImpl;
1325cdf0e10cSrcweir #ifndef _ATL_NO_HOSTING
1326cdf0e10cSrcweir@@ -658,6 +663,13 @@
1327cdf0e10cSrcweir                 ATLASSERT(::IsWindow(m_hWnd));
1328cdf0e10cSrcweir                 return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount);
1329cdf0e10cSrcweir         }
1330cdf0e10cSrcweir+
1331cdf0e10cSrcweir+        HWND GetDlgItem(int nID) const
1332cdf0e10cSrcweir+        {
1333cdf0e10cSrcweir+                ATLASSERT(::IsWindow(m_hWnd));
1334cdf0e10cSrcweir+                return ::GetDlgItem(m_hWnd, nID);
1335cdf0e10cSrcweir+        }
1336cdf0e10cSrcweir+
1337cdf0e10cSrcweir         BOOL GetDlgItemText(int nID, BSTR& bstrText) const
1338cdf0e10cSrcweir         {
1339cdf0e10cSrcweir                 ATLASSERT(::IsWindow(m_hWnd));
1340cdf0e10cSrcweir@@ -847,12 +859,6 @@
1341cdf0e10cSrcweir                 return (int)::SetWindowLong(m_hWnd, GWL_ID, nID);
1342cdf0e10cSrcweir         }
1343cdf0e10cSrcweir
1344cdf0e10cSrcweir-        HWND GetDlgItem(int nID) const
1345cdf0e10cSrcweir-        {
1346cdf0e10cSrcweir-                ATLASSERT(::IsWindow(m_hWnd));
1347cdf0e10cSrcweir-                return ::GetDlgItem(m_hWnd, nID);
1348cdf0e10cSrcweir-        }
1349cdf0e10cSrcweir-
1350cdf0e10cSrcweir // Alert Functions
1351cdf0e10cSrcweir
1352cdf0e10cSrcweir         BOOL FlashWindow(BOOL bInvert)
1353cdf0e10cSrcweir@@ -1319,7 +1325,9 @@
1354cdf0e10cSrcweir         }
1355cdf0e10cSrcweir };
1356cdf0e10cSrcweir
1357cdf0e10cSrcweir-_declspec(selectany) RECT CWindow::rcDefault = { CW_USEDEFAULT, CW_USEDEFAULT, 0, 0 };
1358cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
1359cdf0e10cSrcweir+RECT CWindow::rcDefault = { CW_USEDEFAULT, CW_USEDEFAULT, 0, 0 };
1360cdf0e10cSrcweir+#endif
1361cdf0e10cSrcweir
1362cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////////
1363cdf0e10cSrcweir // CAxWindow - client side for an ActiveX host window
1364cdf0e10cSrcweir@@ -1330,6 +1338,7 @@
1365cdf0e10cSrcweir class CAxWindowT : public TBase
1366cdf0e10cSrcweir {
1367cdf0e10cSrcweir public:
1368cdf0e10cSrcweir+        using TBase::m_hWnd;
1369cdf0e10cSrcweir // Constructors
1370cdf0e10cSrcweir         CAxWindowT(HWND hWnd = NULL) : TBase(hWnd)
1371cdf0e10cSrcweir         { }
1372cdf0e10cSrcweir@@ -1439,11 +1448,13 @@
1373cdf0e10cSrcweir                         hr = spUnk->QueryInterface(iid, ppUnk);
1374cdf0e10cSrcweir                 return hr;
1375cdf0e10cSrcweir         }
1376cdf0e10cSrcweir+#if 0
1377cdf0e10cSrcweir         template <class Q>
1378cdf0e10cSrcweir         HRESULT QueryHost(Q** ppUnk)
1379cdf0e10cSrcweir         {
1380cdf0e10cSrcweir                 return QueryHost(__uuidof(Q), (void**)ppUnk);
1381cdf0e10cSrcweir         }
1382cdf0e10cSrcweir+#endif
1383cdf0e10cSrcweir         HRESULT QueryControl(REFIID iid, void** ppUnk)
1384cdf0e10cSrcweir         {
1385cdf0e10cSrcweir                 ATLASSERT(ppUnk != NULL);
1386cdf0e10cSrcweir@@ -1459,11 +1470,13 @@
1387cdf0e10cSrcweir                         hr = spUnk->QueryInterface(iid, ppUnk);
1388cdf0e10cSrcweir                 return hr;
1389cdf0e10cSrcweir         }
1390cdf0e10cSrcweir+#if 0
1391cdf0e10cSrcweir         template <class Q>
1392cdf0e10cSrcweir         HRESULT QueryControl(Q** ppUnk)
1393cdf0e10cSrcweir         {
1394cdf0e10cSrcweir                 return QueryControl(__uuidof(Q), (void**)ppUnk);
1395cdf0e10cSrcweir         }
1396cdf0e10cSrcweir+#endif
1397cdf0e10cSrcweir         HRESULT SetExternalDispatch(IDispatch* pDisp)
1398cdf0e10cSrcweir         {
1399cdf0e10cSrcweir                 HRESULT hr;
1400cdf0e10cSrcweir@@ -1521,12 +1534,12 @@
1401cdf0e10cSrcweir         BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lResult, DWORD dwMsgMapID = 0) \
1402cdf0e10cSrcweir         { \
1403cdf0e10cSrcweir                 BOOL bHandled = TRUE; \
1404cdf0e10cSrcweir-                hWnd; \
1405cdf0e10cSrcweir-                uMsg; \
1406cdf0e10cSrcweir-                wParam; \
1407cdf0e10cSrcweir-                lParam; \
1408cdf0e10cSrcweir-                lResult; \
1409cdf0e10cSrcweir-                bHandled; \
1410cdf0e10cSrcweir+                (void)hWnd; \
1411cdf0e10cSrcweir+                (void)uMsg; \
1412cdf0e10cSrcweir+                (void)wParam; \
1413cdf0e10cSrcweir+                (void)lParam; \
1414cdf0e10cSrcweir+                (void)lResult; \
1415cdf0e10cSrcweir+                (void)bHandled; \
1416cdf0e10cSrcweir                 switch(dwMsgMapID) \
1417cdf0e10cSrcweir                 { \
1418cdf0e10cSrcweir                 case 0:
1419cdf0e10cSrcweir@@ -1750,7 +1763,7 @@
1420cdf0e10cSrcweir
1421cdf0e10cSrcweir         // search for an empty one
1422cdf0e10cSrcweir
1423cdf0e10cSrcweir-                for(i = 0; i < m_aChainEntry.GetSize(); i++)
1424cdf0e10cSrcweir+                for(int i = 0; i < m_aChainEntry.GetSize(); i++)
1425cdf0e10cSrcweir                 {
1426cdf0e10cSrcweir                         if(m_aChainEntry[i] == NULL)
1427cdf0e10cSrcweir                         {
1428cdf0e10cSrcweir@@ -1841,7 +1854,7 @@
1429cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////////
1430cdf0e10cSrcweir // CWinTraits - Defines various default values for a window
1431cdf0e10cSrcweir
1432cdf0e10cSrcweir-template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0>
1433cdf0e10cSrcweir+template <DWORD t_dwStyle, DWORD t_dwExStyle>
1434cdf0e10cSrcweir class CWinTraits
1435cdf0e10cSrcweir {
1436cdf0e10cSrcweir public:
1437cdf0e10cSrcweir@@ -1855,7 +1868,7 @@
1438cdf0e10cSrcweir         }
1439cdf0e10cSrcweir };
1440cdf0e10cSrcweir
1441cdf0e10cSrcweir-typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0>                                        CControlWinTraits;
1442cdf0e10cSrcweir+//typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0>                                        CControlWinTraits;
1443cdf0e10cSrcweir typedef CWinTraits<WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_APPWINDOW | WS_EX_WINDOWEDGE>                CFrameWinTraits;
1444cdf0e10cSrcweir typedef CWinTraits<WS_OVERLAPPEDWINDOW | WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_MDICHILD>        CMDIChildWinTraits;
1445cdf0e10cSrcweir
1446cdf0e10cSrcweir@@ -1882,6 +1895,7 @@
1447cdf0e10cSrcweir class ATL_NO_VTABLE CWindowImplRoot : public TBase, public CMessageMap
1448cdf0e10cSrcweir {
1449cdf0e10cSrcweir public:
1450cdf0e10cSrcweir+        using TBase::GetDlgItem;
1451cdf0e10cSrcweir         CWndProcThunk m_thunk;
1452cdf0e10cSrcweir         const MSG* m_pCurrentMsg;
1453cdf0e10cSrcweir
1454cdf0e10cSrcweir@@ -1892,7 +1906,7 @@
1455cdf0e10cSrcweir         ~CWindowImplRoot()
1456cdf0e10cSrcweir         {
1457cdf0e10cSrcweir #ifdef _DEBUG
1458cdf0e10cSrcweir-                if(m_hWnd != NULL)        // should be cleared in WindowProc
1459cdf0e10cSrcweir+                if(this->m_hWnd != NULL)        // should be cleared in WindowProc
1460cdf0e10cSrcweir                 {
1461cdf0e10cSrcweir                         ATLTRACE2(atlTraceWindowing, 0, _T("ERROR - Object deleted before window was destroyed\n"));
1462cdf0e10cSrcweir                         ATLASSERT(FALSE);
1463cdf0e10cSrcweir@@ -2017,6 +2031,8 @@
1464cdf0e10cSrcweir class ATL_NO_VTABLE CWindowImplBaseT : public CWindowImplRoot< TBase >
1465cdf0e10cSrcweir {
1466cdf0e10cSrcweir public:
1467cdf0e10cSrcweir+        using CWindowImplRoot< TBase >::m_hWnd;
1468cdf0e10cSrcweir+        using CWindowImplRoot< TBase >::m_thunk;
1469cdf0e10cSrcweir         WNDPROC m_pfnSuperWindowProc;
1470cdf0e10cSrcweir
1471cdf0e10cSrcweir         CWindowImplBaseT() : m_pfnSuperWindowProc(::DefWindowProc)
1472cdf0e10cSrcweir@@ -2049,7 +2065,7 @@
1473cdf0e10cSrcweir
1474cdf0e10cSrcweir         LRESULT DefWindowProc()
1475cdf0e10cSrcweir         {
1476cdf0e10cSrcweir-                const MSG* pMsg = m_pCurrentMsg;
1477cdf0e10cSrcweir+                const MSG* pMsg = this->m_pCurrentMsg;
1478cdf0e10cSrcweir                 LRESULT lRes = 0;
1479cdf0e10cSrcweir                 if (pMsg != NULL)
1480cdf0e10cSrcweir                         lRes = DefWindowProc(pMsg->message, pMsg->wParam, pMsg->lParam);
1481cdf0e10cSrcweir@@ -2091,7 +2107,7 @@
1482cdf0e10cSrcweir         if(pOldProc != StartWindowProc)
1483cdf0e10cSrcweir                 ATLTRACE2(atlTraceWindowing, 0, _T("Subclassing through a hook discarded.\n"));
1484cdf0e10cSrcweir #else
1485cdf0e10cSrcweir-        pOldProc;        // avoid unused warning
1486cdf0e10cSrcweir+        (void)pOldProc;        // avoid unused warning
1487cdf0e10cSrcweir #endif
1488cdf0e10cSrcweir         return pProc(hWnd, uMsg, wParam, lParam);
1489cdf0e10cSrcweir }
1490cdf0e10cSrcweir@@ -2219,6 +2235,7 @@
1491cdf0e10cSrcweir class ATL_NO_VTABLE CWindowImpl : public CWindowImplBaseT< TBase, TWinTraits >
1492cdf0e10cSrcweir {
1493cdf0e10cSrcweir public:
1494cdf0e10cSrcweir+        using CWindowImplBaseT< TBase, TWinTraits >::StartWindowProc;
1495cdf0e10cSrcweir         DECLARE_WND_CLASS(NULL)
1496cdf0e10cSrcweir
1497cdf0e10cSrcweir         HWND Create(HWND hWndParent, RECT& rcPos, LPCTSTR szWindowName = NULL,
1498cdf0e10cSrcweir@@ -2226,8 +2243,8 @@
1499cdf0e10cSrcweir                         UINT nID = 0, LPVOID lpCreateParam = NULL)
1500cdf0e10cSrcweir         {
1501cdf0e10cSrcweir                 if (T::GetWndClassInfo().m_lpszOrigName == NULL)
1502cdf0e10cSrcweir-                        T::GetWndClassInfo().m_lpszOrigName = GetWndClassName();
1503cdf0e10cSrcweir-                ATOM atom = T::GetWndClassInfo().Register(&m_pfnSuperWindowProc);
1504cdf0e10cSrcweir+                        T::GetWndClassInfo().m_lpszOrigName = this->GetWndClassName();
1505cdf0e10cSrcweir+                ATOM atom = T::GetWndClassInfo().Register(&(this->m_pfnSuperWindowProc));
1506cdf0e10cSrcweir
1507cdf0e10cSrcweir                 dwStyle = T::GetWndStyle(dwStyle);
1508cdf0e10cSrcweir                 dwExStyle = T::GetWndExStyle(dwExStyle);
1509cdf0e10cSrcweir@@ -2244,6 +2261,7 @@
1510cdf0e10cSrcweir class ATL_NO_VTABLE CDialogImplBaseT : public CWindowImplRoot< TBase >
1511cdf0e10cSrcweir {
1512cdf0e10cSrcweir public:
1513cdf0e10cSrcweir+        using CWindowImplRoot< TBase >::m_hWnd;
1514cdf0e10cSrcweir    virtual DLGPROC GetDialogProc()
1515cdf0e10cSrcweir    {
1516cdf0e10cSrcweir        return DialogProc;
1517cdf0e10cSrcweir@@ -2344,6 +2362,9 @@
1518cdf0e10cSrcweir class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT< TBase >
1519cdf0e10cSrcweir {
1520cdf0e10cSrcweir public:
1521cdf0e10cSrcweir+        using CDialogImplBaseT< TBase >::m_hWnd;
1522cdf0e10cSrcweir+        using CDialogImplBaseT< TBase >::m_thunk;
1523cdf0e10cSrcweir+        typedef CDialogImplBaseT< TBase > CDialogImplBase_Class;
1524cdf0e10cSrcweir #ifdef _DEBUG
1525cdf0e10cSrcweir         bool m_bModal;
1526cdf0e10cSrcweir         CDialogImpl() : m_bModal(false) { }
1527cdf0e10cSrcweir@@ -2422,6 +2443,8 @@
1528cdf0e10cSrcweir class ATL_NO_VTABLE CAxDialogImpl : public CDialogImplBaseT< TBase >
1529cdf0e10cSrcweir {
1530cdf0e10cSrcweir public:
1531cdf0e10cSrcweir+        using CDialogImplBaseT< TBase >::m_hWnd;
1532cdf0e10cSrcweir+        using CDialogImplBaseT< TBase >::m_thunk;
1533cdf0e10cSrcweir #ifdef _DEBUG
1534cdf0e10cSrcweir         bool m_bModal;
1535cdf0e10cSrcweir         CAxDialogImpl() : m_bModal(false) { }
1536cdf0e10cSrcweir@@ -2515,6 +2538,8 @@
1537cdf0e10cSrcweir class CContainedWindowT : public TBase
1538cdf0e10cSrcweir {
1539cdf0e10cSrcweir public:
1540cdf0e10cSrcweir+        using TBase::m_hWnd;
1541cdf0e10cSrcweir+        using TBase::GetWndClassName;
1542cdf0e10cSrcweir         CWndProcThunk m_thunk;
1543cdf0e10cSrcweir         LPCTSTR m_lpszClassName;
1544cdf0e10cSrcweir         WNDPROC m_pfnSuperWindowProc;
1545cdf0e10cSrcweir@@ -2536,7 +2561,7 @@
1546cdf0e10cSrcweir         { }
1547cdf0e10cSrcweir
1548cdf0e10cSrcweir         CContainedWindowT(CMessageMap* pObject, DWORD dwMsgMapID = 0)
1549cdf0e10cSrcweir-                : m_lpszClassName(TBase::GetWndClassName()),
1550cdf0e10cSrcweir+                : m_lpszClassName(GetWndClassName()),
1551cdf0e10cSrcweir                 m_pfnSuperWindowProc(::DefWindowProc),
1552cdf0e10cSrcweir                 m_pObject(pObject), m_dwMsgMapID(dwMsgMapID),
1553cdf0e10cSrcweir                 m_pCurrentMsg(NULL)
1554cdf0e10cSrcweir@@ -2666,7 +2691,7 @@
1555cdf0e10cSrcweir                 LPCTSTR szWindowName = NULL, DWORD dwStyle = 0, DWORD dwExStyle = 0,
1556cdf0e10cSrcweir                 UINT nID = 0, LPVOID lpCreateParam = NULL)
1557cdf0e10cSrcweir         {
1558cdf0e10cSrcweir-                m_lpszClassName = TBase::GetWndClassName();
1559cdf0e10cSrcweir+                m_lpszClassName = GetWndClassName();
1560cdf0e10cSrcweir                 m_pfnSuperWindowProc = ::DefWindowProc;
1561cdf0e10cSrcweir                 m_pObject = pObject;
1562cdf0e10cSrcweir                 m_dwMsgMapID = dwMsgMapID;
1563cdf0e10cSrcweir@@ -2959,8 +2984,11 @@
1564cdf0e10cSrcweir         {
1565cdf0e10cSrcweir
1566cdf0e10cSrcweir                 ::EnterCriticalSection(&pM->m_csWindowCreate);
1567cdf0e10cSrcweir-                __try
1568cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
1569cdf0e10cSrcweir+                __SEHandler _sehandler;
1570cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
1571cdf0e10cSrcweir                 {
1572cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, &pM->m_csWindowCreate, EXCEPTION_CONTINUE_SEARCH, NULL, atlfinalleavecriticalsection);
1573cdf0e10cSrcweir                         if(p->m_atom == 0)
1574cdf0e10cSrcweir                         {
1575cdf0e10cSrcweir                                 HINSTANCE hInst = pM->m_hInst;
1576cdf0e10cSrcweir@@ -2979,7 +3007,7 @@
1577cdf0e10cSrcweir                                                 if(!::GetClassInfoExA(_Module.GetModuleInstance(), p->m_lpszOrigName, &wc))
1578cdf0e10cSrcweir                                                 {
1579cdf0e10cSrcweir                                                         fFail = TRUE;
1580cdf0e10cSrcweir-                                                        __leave;
1581cdf0e10cSrcweir+                                                        __builtin_longjmp(_sejmpbuf, 1);
1582cdf0e10cSrcweir                                                 }
1583cdf0e10cSrcweir                                         }
1584cdf0e10cSrcweir                                         memcpy(&p->m_wc, &wc, sizeof(WNDCLASSEX));
1585cdf0e10cSrcweir@@ -3011,10 +3039,7 @@
1586cdf0e10cSrcweir                                         p->m_atom = ::RegisterClassExA(&p->m_wc);
1587cdf0e10cSrcweir                         }
1588cdf0e10cSrcweir                 }
1589cdf0e10cSrcweir-                __finally
1590cdf0e10cSrcweir-                {
1591cdf0e10cSrcweir-                        ::LeaveCriticalSection(&pM->m_csWindowCreate);
1592cdf0e10cSrcweir-                }
1593cdf0e10cSrcweir+                _sehandler.Reset();
1594cdf0e10cSrcweir         }
1595cdf0e10cSrcweir
1596cdf0e10cSrcweir         if (fFail)
1597cdf0e10cSrcweir@@ -3038,8 +3063,11 @@
1598cdf0e10cSrcweir         if (p->m_atom == 0)
1599cdf0e10cSrcweir         {
1600cdf0e10cSrcweir                 ::EnterCriticalSection(&pM->m_csWindowCreate);
1601cdf0e10cSrcweir-                __try
1602cdf0e10cSrcweir+                jmp_buf _sejmpbuf;
1603cdf0e10cSrcweir+                __SEHandler _sehandler;
1604cdf0e10cSrcweir+                if (__builtin_setjmp(_sejmpbuf) == 0)
1605cdf0e10cSrcweir                 {
1606cdf0e10cSrcweir+                        _sehandler.Set(_sejmpbuf, &pM->m_csWindowCreate, EXCEPTION_CONTINUE_SEARCH, NULL, atlfinalleavecriticalsection);
1607cdf0e10cSrcweir                         if(p->m_atom == 0)
1608cdf0e10cSrcweir                         {
1609cdf0e10cSrcweir                                 HINSTANCE hInst = pM->m_hInst;
1610cdf0e10cSrcweir@@ -3058,7 +3086,7 @@
1611cdf0e10cSrcweir                                                 if(!::GetClassInfoExW(_Module.GetModuleInstance(), p->m_lpszOrigName, &wc))
1612cdf0e10cSrcweir                                                 {
1613cdf0e10cSrcweir                                                         fFail = TRUE;
1614cdf0e10cSrcweir-                                                        __leave;
1615cdf0e10cSrcweir+                                                        __builtin_longjmp(_sejmpbuf, -1);
1616cdf0e10cSrcweir                                                 }
1617cdf0e10cSrcweir                                         }
1618cdf0e10cSrcweir                                         memcpy(&p->m_wc, &wc, sizeof(WNDCLASSEX));
1619cdf0e10cSrcweir@@ -3090,10 +3118,7 @@
1620cdf0e10cSrcweir                                         p->m_atom = ::RegisterClassExW(&p->m_wc);
1621cdf0e10cSrcweir                         }
1622cdf0e10cSrcweir                 }
1623cdf0e10cSrcweir-                __finally
1624cdf0e10cSrcweir-                {
1625cdf0e10cSrcweir-                        ::LeaveCriticalSection(&pM->m_csWindowCreate);
1626cdf0e10cSrcweir-                }
1627cdf0e10cSrcweir+                _sehandler.Reset();
1628cdf0e10cSrcweir         }
1629cdf0e10cSrcweir
1630cdf0e10cSrcweir         if (fFail)
1631cdf0e10cSrcweir--- include/atl/statreg.h.orig  2005-04-14 17:54:34.000000000 +0900
1632cdf0e10cSrcweir+++ include/atl/statreg.h   2006-09-18 20:05:01.468750000 +0900
1633cdf0e10cSrcweir@@ -573,15 +573,16 @@
1634cdf0e10cSrcweir         return hRes;
1635cdf0e10cSrcweir }
1636cdf0e10cSrcweir
1637*07a3d7f1SPedro Giffuni-__declspec(selectany) LPCTSTR CRegParser::rgszNeverDelete[] = //Component Categories
1638cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS
1639*07a3d7f1SPedro Giffuni+LPCTSTR CRegParser::rgszNeverDelete[] = //Component Categories
1640cdf0e10cSrcweir {
1641cdf0e10cSrcweir         _T("CLSID"), _T("TYPELIB")
1642cdf0e10cSrcweir };
1643cdf0e10cSrcweir
1644cdf0e10cSrcweir-__declspec(selectany) const int CRegParser::cbNeverDelete = sizeof(rgszNeverDelete) / sizeof(LPCTSTR*);
1645cdf0e10cSrcweir-__declspec(selectany) const int CRegParser::MAX_VALUE=4096;
1646cdf0e10cSrcweir-__declspec(selectany) const int CRegParser::MAX_TYPE=MAX_VALUE;
1647cdf0e10cSrcweir-
1648cdf0e10cSrcweir+const int CRegParser::cbNeverDelete = sizeof(rgszNeverDelete) / sizeof(LPCTSTR*);
1649cdf0e10cSrcweir+const int CRegParser::MAX_VALUE=4096;
1650cdf0e10cSrcweir+const int CRegParser::MAX_TYPE=MAX_VALUE;
1651cdf0e10cSrcweir+#endif
1652cdf0e10cSrcweir
1653cdf0e10cSrcweir inline BOOL CRegParser::VTFromRegType(LPCTSTR szValueType, VARTYPE& vt)
1654cdf0e10cSrcweir {
1655