Index: mojo/public/cpp/system/handle.h |
diff --git a/mojo/public/cpp/system/handle.h b/mojo/public/cpp/system/handle.h |
index af81824603f6d00a7542b2173206105d551b93ee..b33d8068a652779f36b9aa7bf3c2b22716e2ca13 100644 |
--- a/mojo/public/cpp/system/handle.h |
+++ b/mojo/public/cpp/system/handle.h |
@@ -238,7 +238,15 @@ inline MojoResult CloseRaw(Handle handle) { |
// Strict weak ordering, so that |Handle|s can be used as keys in |std::map|s, |
// etc. |
+#ifdef __native_client__ |
+// Passing the operands by reference confuses the STL implementation in NaCl's |
+// GCC toolchain and results in specialized templates that break strict aliasing |
+// rules. |
+// TODO(ncbray): unhack this. |
+inline bool operator<(const Handle a, const Handle b) { |
+#else |
inline bool operator<(const Handle& a, const Handle& b) { |
+#endif |
return a.value() < b.value(); |
} |