]> granicus.if.org Git - xz/commitdiff
liblzma: A MSVC-specific hack isn't needed with MSVC 2013 and newer.
authorLasse Collin <lasse.collin@tukaani.org>
Sun, 12 Jul 2015 17:48:19 +0000 (20:48 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Sun, 12 Jul 2015 17:48:19 +0000 (20:48 +0300)
src/liblzma/api/lzma.h

index 72c51b2411c30bb36c8e1c47c8f3b6ddfc24133a..ce675a7887164888acd53f376eeb8086874bffcc 100644 (file)
 #      if !defined(UINT32_C) || !defined(UINT64_C) \
                        || !defined(UINT32_MAX) || !defined(UINT64_MAX)
                /*
-                * MSVC has no C99 support, and thus it cannot be used to
-                * compile liblzma. The liblzma API has to still be usable
-                * from MSVC, so we need to define the required standard
-                * integer types here.
+                * MSVC versions older than 2013 have no C99 support, and
+                * thus they cannot be used to compile liblzma. Using an
+                * existing liblzma.dll with old MSVC can work though(*),
+                * but we need to define the required standard integer
+                * types here in a MSVC-specific way.
+                *
+                * (*) If you do this, the existing liblzma.dll probably uses
+                *     a different runtime library than your MSVC-built
+                *     application. Mixing runtimes is generally bad, but
+                *     in this case it should work as long as you avoid
+                *     the few rarely-needed liblzma functions that allocate
+                *     memory and expect the caller to free it using free().
                 */
-#              if defined(_WIN32) && defined(_MSC_VER)
+#              if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1800
                        typedef unsigned __int8 uint8_t;
                        typedef unsigned __int32 uint32_t;
                        typedef unsigned __int64 uint64_t;