aboutsummaryrefslogtreecommitdiff
path: root/nxcomp/Types.h
diff options
context:
space:
mode:
authorClemens Lang <cal@macports.org>2015-02-13 13:35:40 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-13 13:35:40 +0100
commitab8d1276f5c7ebef6f959cfb691cce5fff6867b4 (patch)
tree272d48e50599509e84672a423bfb88bda649e669 /nxcomp/Types.h
parent96d5e74a30ea8571c3e403bd5d5b3080aaa193f1 (diff)
downloadnx-libs-ab8d1276f5c7ebef6f959cfb691cce5fff6867b4.tar.gz
nx-libs-ab8d1276f5c7ebef6f959cfb691cce5fff6867b4.tar.bz2
nx-libs-ab8d1276f5c7ebef6f959cfb691cce5fff6867b4.zip
In Types.h, don't use STL internals on libc++ (605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full+lite.patch).
The nx-libs-lite package does not compile on OS X Mavericks because Apple's clang compilers now default to compiling against the libc++ STL rather than (their outdated copy of) libstdc++. While the compiler still allows changing that, we should not rely on this being possible forever. The compiler chokes in Types.h, specifically the clear() methods in subclasses of vectors that use implementation details of the GNU STL. The attached patch fixes these compilation issues by not overriding the clear() method when compiling against libc++, since the libc++ headers seem to do essentially the same as the overriden method.
Diffstat (limited to 'nxcomp/Types.h')
-rw-r--r--nxcomp/Types.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/nxcomp/Types.h b/nxcomp/Types.h
index 05f62bd00..b3fe40e31 100644
--- a/nxcomp/Types.h
+++ b/nxcomp/Types.h
@@ -55,6 +55,9 @@ class T_data : public vector < unsigned char >
return &*(vector < unsigned char >::begin());
}
+ // Avoid overriding clear() when using libc++. Fiddling with STL internals
+ // doesn't really seem like a good idea to me anyway.
+ #ifndef _LIBCPP_VECTOR
void clear()
{
#if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H)
@@ -95,12 +98,16 @@ class T_data : public vector < unsigned char >
#endif /* #if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H) */
}
+ #endif /* #ifdef _LIBCPP_VECTOR */
};
class T_messages : public vector < Message * >
{
public:
+ // Avoid overriding clear() when using libc++. Fiddling with STL internals
+ // doesn't really seem like a good idea to me anyway.
+ #ifndef _LIBCPP_VECTOR
void clear()
{
#if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H)
@@ -141,6 +148,7 @@ class T_messages : public vector < Message * >
#endif /* #if defined(__STL_USE_STD_ALLOCATORS) || defined(__GLIBCPP_INTERNAL_VECTOR_H) */
}
+ #endif /* #ifndef _LIBCPP_VECTOR */
};
typedef md5_byte_t * T_checksum;