Browse Source

Use autoconf to check for optional zstd functionality.

Fixes a bug in our zstd-static code.  Bug not in any released
version of Tor.
Nick Mathewson 6 years ago
parent
commit
5199b9b337
2 changed files with 14 additions and 0 deletions
  1. 10 0
      configure.ac
  2. 4 0
      src/common/compress_zstd.c

+ 10 - 0
configure.ac

@@ -977,6 +977,16 @@ if test "x$have_zstd" = "xyes"; then
     AC_DEFINE(HAVE_ZSTD,1,[Have Zstd])
     TOR_ZSTD_CFLAGS="${ZSTD_CFLAGS}"
     TOR_ZSTD_LIBS="${ZSTD_LIBS}"
+
+    dnl now check for zstd functions
+    save_LIBS="$LIBS"
+    save_CFLAGS="$CFLAGS"
+    LIBS="$LIBS $ZSTD_LIBS"
+    CFLAGS="$CFLAGS $ZSTD_CFLAGS"
+    AC_CHECK_FUNCS(ZSTD_estimateCStreamSize \
+                   ZSTD_estimateDCtxSize)
+    LIBS="$save_LIBS"
+    CFLAGS="$save_CFLAGS"
 fi
 AC_SUBST(TOR_ZSTD_CFLAGS)
 AC_SUBST(TOR_ZSTD_LIBS)

+ 4 - 0
src/common/compress_zstd.c

@@ -219,10 +219,14 @@ tor_zstd_state_size_precalc(int compress, int preset)
 #ifdef ZSTD_STATIC_LINKING_ONLY
   if (tor_zstd_can_use_static_apis()) {
     if (compress) {
+#ifdef HAVE_ZSTD_ESTIMATECSTREAMSIZE
       return ZSTD_estimateCStreamSize(preset);
+#endif
     } else {
+#ifdef HAVE_ZSTD_ESTIMATEDCTXSIZE
       /* Could use DStream, but that takes a windowSize. */
       return ZSTD_estimateDCtxSize();
+#endif
     }
   }
 #endif