mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-20 20:45:02 -05:00
I think r8738 broke IPv6 in MSVC Windows builds due to conflict with the
WspiapiGetAddrInfo wrapper for getaddrinfo() in MSVC. Split GET_WINDOWS_FUNCTION into two variants, one with the old behaviour (bypassing the preprocessor) and another with the new behaviour (for ANSI/Unicode, although it's not actually used anywhere currently). [originally from svn r8898] [r8738 == 24b6168c1d4e6bf226f603a9b94c1ebf942b96f0]
This commit is contained in:
parent
12b6a4e7dd
commit
9f4b758db2
@ -74,17 +74,31 @@ struct FontSpec {
|
|||||||
#define DF_END 0x0001
|
#define DF_END 0x0001
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dynamically linked functions.
|
* Dynamically linked functions. These come in two flavours:
|
||||||
* This is somewhat circuitous to allow function-renaming macros to be
|
*
|
||||||
* expanded, principally the ANSI/Unicode DoSomethingA/DoSomethingW.
|
* - GET_WINDOWS_FUNCTION does not expose "name" to the preprocessor,
|
||||||
|
* so will always dynamically link against exactly what is specified
|
||||||
|
* in "name". If you're not sure, use this one.
|
||||||
|
*
|
||||||
|
* - GET_WINDOWS_FUNCTION_PP allows "name" to be redirected via
|
||||||
|
* preprocessor definitions like "#define foo bar"; this is principally
|
||||||
|
* intended for the ANSI/Unicode DoSomething/DoSomethingA/DoSomethingW.
|
||||||
|
* If your function has an argument of type "LPTSTR" or similar, this
|
||||||
|
* is the variant to use.
|
||||||
|
* (However, it can't always be used, as it trips over more complicated
|
||||||
|
* macro trickery such as the WspiapiGetAddrInfo wrapper for getaddrinfo.)
|
||||||
|
*
|
||||||
|
* (DECL_WINDOWS_FUNCTION works with both these variants.)
|
||||||
*/
|
*/
|
||||||
#define DECL_WINDOWS_FUNCTION(linkage, rettype, name, params) \
|
#define DECL_WINDOWS_FUNCTION(linkage, rettype, name, params) \
|
||||||
typedef rettype (WINAPI *t_##name) params; \
|
typedef rettype (WINAPI *t_##name) params; \
|
||||||
linkage t_##name p_##name
|
linkage t_##name p_##name
|
||||||
#define STR1(x) #x
|
#define STR1(x) #x
|
||||||
#define STR(x) STR1(x)
|
#define STR(x) STR1(x)
|
||||||
#define GET_WINDOWS_FUNCTION(module, name) \
|
#define GET_WINDOWS_FUNCTION_PP(module, name) \
|
||||||
p_##name = module ? (t_##name) GetProcAddress(module, STR(name)) : NULL
|
p_##name = module ? (t_##name) GetProcAddress(module, STR(name)) : NULL
|
||||||
|
#define GET_WINDOWS_FUNCTION(module, name) \
|
||||||
|
p_##name = module ? (t_##name) GetProcAddress(module, #name) : NULL
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global variables. Most modules declare these `extern', but
|
* Global variables. Most modules declare these `extern', but
|
||||||
|
Loading…
x
Reference in New Issue
Block a user