cygipc (and PostgreSQL) XP problem resolved!

Charles Wilson cwilson@ece.gatech.edu
Thu May 8 00:33:00 GMT 2003


Jason Tishler wrote:

> +#define NAMESPACE_PREFIX "Global\\"
> +#define FULL_NAMESPACE_PATH(name) \
> +	((LOBYTE(LOWORD(GetVersion())) >= 5 && \
> +	HIBYTE(LOWORD(GetVersion())) >= 1) ? NAMESPACE_PREFIX name : name) \
> +
> +#define CYGWIN_IPCNT_SEMCTL	FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMCTL_BASE)
> +#define CYGWIN_IPCNT_SEMSEM	FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMSEM_BASE)
> +#define CYGWIN_IPCNT_SEMSHM	FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMSHM_BASE)
> +#define CYGWIN_IPCNT_SEMMSG	FULL_NAMESPACE_PATH(CYGWIN_IPCNT_SEMMSG_BASE)

Wait, aren't #define macros resolved at compile time?  This would then 
define these names as "foo" or "Global\\foo" depending on which machine 
the package was BUILT on.

Worse, if the cygipc library itself were built on WinXP, but you build a 
client app on W98 -- then your code thinks "foo" but the daemon things 
"Global\\foo".  Or vice versa.

I think this needs to be a runtime function, not a compiletime macro.

--Chuck


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list