win32 KUriFilterData problem with ERROR define
Andreas Pakulat
apaku at gmx.de
Wed Aug 29 14:24:15 BST 2007
On 29.08.07 14:45:49, Christian Ehrlicher wrote:
> > Von: Ralf Habacker <ralf.habacker at freenet.de>
> > 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 ?
> >
> Write to k-c-d and ask if we still can change it. If yes -> do it next monday. Otherwise include fixwin.h (it's from kdelibs/kdecore) - it should do nearly the same like you did.
Isn't there a general exception to "fix broken API", this is broken API - IMHO.
I'd say if you can find all usages and port them, just make it
camel-case.
Andreas
--
You single-handedly fought your way into this hopeless mess.
More information about the kde-core-devel
mailing list