undefine internal-use type macros at the end of alltypes.h
authorRich Felker <dalias@aerifal.cx>
Tue, 23 Jul 2013 00:58:04 +0000 (20:58 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 23 Jul 2013 00:58:04 +0000 (20:58 -0400)
this patch is something of a compromise for a compatibility
regression discovered after the header refactoring: libtiff uses
_Int64 for its own use. this is absolutely wrong, invalid C, and
should not be supported, but it's also frustrating for users when code
that used to work suddenly breaks.

rather than leave the breakage in place or change musl internals to
accommodate broken software, I've found a change that makes the
problem go away and improves musl. by undefining these macros at the
end of alltypes.h, the temptation to use them in other headers is
removed. (for example, I almost used _Int64 in sys/types.h to define
u_int64_t rather than adding it back to alltypes.h.) by confining use
of these macros to alltypes.h, we keep it easy to go back and change
the implementation of alltypes later, if needed.

include/alltypes.h.in

index 6f7035830d83a20bf1a9be1cc86e783b47bf21d9..c4ca5d5254a9d8f6ac0ed432f0c6fd659e0cf40e 100644 (file)
@@ -66,3 +66,7 @@ STRUCT iovec { void *iov_base; size_t iov_len; };
 
 TYPEDEF unsigned socklen_t;
 TYPEDEF unsigned short sa_family_t;
+
+#undef _Addr
+#undef _Int64
+#undef _Reg