Mercurial > sdl-ios-xcode
annotate src/audio/windx5/directx.h @ 4158:96ce26f24b01 SDL-1.2
Date: Sun, 7 Sep 2008 15:17:00 +0200
From: c2woody@gmx.net
Subject: [SDL] SDL 1.2 doube free/pointer zeroing missing
Hello,
this is about a crash/debug breakage for the current SDL 1.2
source tree (today's svn checkout, same problem in 1.2.13 and
before as far as relevant).
In some places memory is free()d but the associated pointer
is not zeroed, leading to for example double free()s.
For me this happened because SDL_StopEventThread() was executed
twice (during restart of the subsystems), once for the close
down in SDL_VideoQuit() and once at the startup, right at the
beginning of SDL_StartEventLoop(). Thus the code
SDL_DestroyMutex(SDL_EventQ.lock);
(see SDL_events.c) was called twice and executed the SDL_free(mutex);
twice as well, leading to a crash (msvc 64bit for which it was noticed).
I've tried to check all other occurrences of SDL_free and similar
code in msvc, see the attached patch (udiff against revision 4082).
Non-windows only codepaths have neither been checked nor touched.
Comments/ideas welcome.
Attached patch: NULLifies some pointers after they have been free()d.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 12 Nov 2008 17:23:40 +0000 |
parents | bb6839704ed6 |
children | 782fd950bd46 eada7e321df6 |
rev | line source |
---|---|
1274
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
1 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
2 #ifndef _directx_h |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
3 #define _directx_h |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
4 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
5 /* Include all of the DirectX 5.0 headers and adds any necessary tweaks */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
6 |
1433
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
7 #define WIN32_LEAN_AND_MEAN |
bb6839704ed6
SDL_windows.h is no longer necessary
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
8 #include <windows.h> |
1274
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
9 #include <mmsystem.h> |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
10 #ifndef WIN32 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
11 #define WIN32 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
12 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
13 #undef WINNT |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
14 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
15 /* Far pointers don't exist in 32-bit code */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
16 #ifndef FAR |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
17 #define FAR |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
18 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
19 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
20 /* Error codes not yet included in Win32 API header files */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
21 #ifndef MAKE_HRESULT |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
22 #define MAKE_HRESULT(sev,fac,code) \ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
23 ((HRESULT)(((unsigned long)(sev)<<31) | ((unsigned long)(fac)<<16) | ((unsigned long)(code)))) |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
24 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
25 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
26 #ifndef S_OK |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
27 #define S_OK (HRESULT)0x00000000L |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
28 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
30 #ifndef SUCCEEDED |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
31 #define SUCCEEDED(x) ((HRESULT)(x) >= 0) |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
32 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
33 #ifndef FAILED |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
34 #define FAILED(x) ((HRESULT)(x)<0) |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
35 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
36 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
37 #ifndef E_FAIL |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
38 #define E_FAIL (HRESULT)0x80000008L |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
39 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 #ifndef E_NOINTERFACE |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 #define E_NOINTERFACE (HRESULT)0x80004002L |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
42 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
43 #ifndef E_OUTOFMEMORY |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
44 #define E_OUTOFMEMORY (HRESULT)0x8007000EL |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
45 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
46 #ifndef E_INVALIDARG |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
47 #define E_INVALIDARG (HRESULT)0x80070057L |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 #ifndef E_NOTIMPL |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 #define E_NOTIMPL (HRESULT)0x80004001L |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
51 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
52 #ifndef REGDB_E_CLASSNOTREG |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
53 #define REGDB_E_CLASSNOTREG (HRESULT)0x80040154L |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
54 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
55 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
56 /* Severity codes */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 #ifndef SEVERITY_ERROR |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 #define SEVERITY_ERROR 1 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
59 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
60 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 /* Error facility codes */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
62 #ifndef FACILITY_WIN32 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
63 #define FACILITY_WIN32 7 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
64 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
65 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
66 #ifndef FIELD_OFFSET |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
67 #define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field)) |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
68 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
69 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
70 /* DirectX headers (if it isn't included, I haven't tested it yet) |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
72 /* We need these defines to mark what version of DirectX API we use */ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
73 #define DIRECTDRAW_VERSION 0x0700 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
74 #define DIRECTSOUND_VERSION 0x0500 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
75 #define DIRECTINPUT_VERSION 0x0500 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
76 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
77 #ifdef __GNUC__ |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
78 #define NONAMELESSUNION |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
79 #endif |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
80 #include <ddraw.h> |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
81 #include <dsound.h> |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
82 #include <dinput.h> |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
83 |
4726fa79ede1
Date: Mon, 23 Feb 2004 23:29:20 -0500
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
84 #endif /* _directx_h */ |