Commit 3be44a48c3bd34a7a710bbf32d9b898a21ecf2eb
1 parent
6198bbcb
Exists in
master
and in
3 other branches
Adding auto-cleanup macro for windows registry.
Showing
5 changed files
with
12 additions
and
7 deletions
Show diff stats
src/core/host.c
| ... | ... | @@ -57,6 +57,7 @@ |
| 57 | 57 | |
| 58 | 58 | #include <errno.h> |
| 59 | 59 | #include <lib3270/internals.h> |
| 60 | +#include <lib3270/os.h> | |
| 60 | 61 | #include <lib3270/properties.h> |
| 61 | 62 | #include <lib3270/log.h> |
| 62 | 63 | #include <lib3270/trace.h> |
| ... | ... | @@ -321,7 +322,7 @@ LIB3270_EXPORT const char * lib3270_get_default_host(const H3270 GNUC_UNUSED(*hS |
| 321 | 322 | { |
| 322 | 323 | #ifdef _WIN32 |
| 323 | 324 | { |
| 324 | - HKEY hKey; | |
| 325 | + lib3270_auto_cleanup(HKEY) hKey; | |
| 325 | 326 | DWORD disp = 0; |
| 326 | 327 | LSTATUS rc = RegCreateKeyEx( |
| 327 | 328 | HKEY_LOCAL_MACHINE, |
| ... | ... | @@ -350,8 +351,6 @@ LIB3270_EXPORT const char * lib3270_get_default_host(const H3270 GNUC_UNUSED(*hS |
| 350 | 351 | |
| 351 | 352 | DWORD dwRet = RegQueryValueEx(hKey,"host",NULL,NULL,(LPBYTE) default_host, &cbData); |
| 352 | 353 | |
| 353 | - RegCloseKey(hKey); | |
| 354 | - | |
| 355 | 354 | if(dwRet == ERROR_SUCCESS) |
| 356 | 355 | { |
| 357 | 356 | default_host = (char *) realloc(default_host,cbData+1); | ... | ... |
src/core/session.c
| ... | ... | @@ -359,7 +359,7 @@ static void lib3270_session_init(H3270 *hSession, const char *model, const char |
| 359 | 359 | #ifdef _WIN32 |
| 360 | 360 | // Get defaults from registry. |
| 361 | 361 | { |
| 362 | - HKEY hKey; | |
| 362 | + lib3270_auto_cleanup(HKEY) hKey = 0; | |
| 363 | 363 | DWORD disp = 0; |
| 364 | 364 | LSTATUS rc = RegCreateKeyEx( |
| 365 | 365 | HKEY_LOCAL_MACHINE, |
| ... | ... | @@ -398,7 +398,6 @@ static void lib3270_session_init(H3270 *hSession, const char *model, const char |
| 398 | 398 | |
| 399 | 399 | } |
| 400 | 400 | |
| 401 | - RegCloseKey(hKey); | |
| 402 | 401 | } |
| 403 | 402 | } |
| 404 | 403 | #endif // _WIN32 | ... | ... |
src/core/toggles/init.c
| ... | ... | @@ -163,7 +163,7 @@ void initialize_toggles(H3270 *session) |
| 163 | 163 | |
| 164 | 164 | #ifdef _WIN32 |
| 165 | 165 | { |
| 166 | - HKEY hKey; | |
| 166 | + lib3270_auto_cleanup(HKEY) hKey = 0; | |
| 167 | 167 | DWORD disp = 0; |
| 168 | 168 | LSTATUS rc = RegCreateKeyEx( |
| 169 | 169 | HKEY_LOCAL_MACHINE, |
| ... | ... | @@ -201,7 +201,6 @@ void initialize_toggles(H3270 *session) |
| 201 | 201 | } |
| 202 | 202 | |
| 203 | 203 | } |
| 204 | - RegCloseKey(hKey); | |
| 205 | 204 | } |
| 206 | 205 | |
| 207 | 206 | } | ... | ... |
src/include/lib3270.h
| ... | ... | @@ -56,6 +56,7 @@ |
| 56 | 56 | |
| 57 | 57 | #define LIB3270_AUTOPTR_FUNC_NAME(TypeName) lib3270_autoptr_cleanup_##TypeName |
| 58 | 58 | #define lib3270_autoptr(TypeName) TypeName * __attribute__ ((__cleanup__(LIB3270_AUTOPTR_FUNC_NAME(TypeName)))) |
| 59 | + #define lib3270_auto_cleanup(TypeName) TypeName __attribute__ ((__cleanup__(LIB3270_AUTOPTR_FUNC_NAME(TypeName)))) | |
| 59 | 60 | |
| 60 | 61 | #endif // __GNUC__ |
| 61 | 62 | ... | ... |
src/include/windows/lib3270/os.h