win32 KUriFilterData problem with ERROR define

Ralf Habacker ralf.habacker at freenet.de
Wed Aug 29 14:42:45 CEST 2007


Hi,

in kio's KUriFilterData class 
(http://lxr.kde.org/source/KDE/kdelibs/kio/kio/kurifilter.h#098)

there are the following enums defined

m UriTypes { NET_PROTOCOL=0, LOCAL_FILE, LOCAL_DIR, EXECUTABLE, HELP, 
SHELL, BLOCKED, ERROR, UNKNOWN };

Because they are all uppercase at least the ERROR value collidates with 
a win 32 preprozessor macro definition.

I recognized this when compiling kdebase with msvc

In

KonqMisc::konqFilteredURL

the line
193: if( data.uriType() == KUriFilterData::ERROR && 
!data.errorMsg().isEmpty() )

is converted to     

193: if( data.uriType() == KUriFilterData::0 && !data.errorMsg().isEmpty() )

which results in a error.

I can correct this problem in konqmisc.cpp  by undefining ERROR after 
all includes as shown below

#ifdef Q_WS_WIN
// windows defines ERROR
#undef ERROR
#endif

I remember that there were other similar cases and that they were fixed 
by using non-all-uppercase enum values.

How to proceed ?

Ralf





More information about the Kde-windows mailing list