[Buildroot] [buildroot 0001491]: QTopia4 and uclibc string.h macro "index()" conflict
bugs at busybox.net
bugs at busybox.net
Thu Sep 6 15:54:22 UTC 2007
The following issue has been SUBMITTED.
======================================================================
http://busybox.net/bugs/view.php?id=1491
======================================================================
Reported By: HappyCactus
Assigned To: buildroot
======================================================================
Project: buildroot
Issue ID: 1491
Category: Architecture Specific
Reproducibility: always
Severity: major
Priority: normal
Status: assigned
======================================================================
Date Submitted: 09-06-2007 08:54 PDT
Last Modified: 09-06-2007 08:54 PDT
======================================================================
Summary: QTopia4 and uclibc string.h macro "index()" conflict
Description:
QTopia4 4.3.1 and uclibc doesn't compile when
__UCLIBC_SUSV3_LEGACY_MACROS__ is defined in uclibc.
Infacts we see in $(STAGING_DIR)/usr/include/string.h:
# ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
/* bcopy/bzero/bcmp/index/rindex are marked LEGACY in SuSv3.
* They are replaced as proposed by SuSv3. Don't sync this part
* with glibc and keep it in sync with strings.h. */
# define bcopy(src,dest,n) (memmove((dest), (src), (n)), (void) 0)
# define bzero(s,n) (memset((s), '\0', (n)), (void) 0)
# define bcmp(s1,s2,n) memcmp((s1), (s2), (size_t)(n))
# define index(s,c) strchr((s), (c))
# define rindex(s,c) strrchr((s), (c))
# endif
#
Not very smart to define a macro for this very common names. Imagine what
happens if src/corelib/kernel/qabstractitemmodel.h contains his code:
class Q_CORE_EXPORT QAbstractItemModel : public QObject
{
// ...
virtual QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const = 0;
Of course, the preprocessor changes the index to strchr( ... and doesn't
compile.
A workaround is a patch for the QByteArray.h file that unsets the macro.
But it should be better to change the #define index(r,s) with a simple
call to the chrchr () function and let the compiler do his optimizations.
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
09-06-07 08:54 HappyCactus New Issue
09-06-07 08:54 HappyCactus Status new => assigned
09-06-07 08:54 HappyCactus Assigned To => buildroot
======================================================================
More information about the buildroot
mailing list