branch: elpa/pdf-tools
commit 93b008ac73006119b207ef4e6b96d335c9800b69
Author: Sundaram Ramaswamy <[email protected]>
Commit: GitHub <[email protected]>

    feat(server): add MSYS2 UCRT64 environment support
    
    Support the newer UCRT64 MSYS2 environment (recommended default per 
msys2.org).
    
    - Add UCRT64 detection to server/autobuild
    - Fix vasprintf implicit declaration error on Windows (synctex_parser.c)
    - Update configure.ac for Windows compatibility
    
    Fixes #282, #286
    Supersedes #295
    
    Tested by multiple users on Windows 10/11 with MSYS2.
    
    Co-authored-by: legends2k
---
 server/autobuild        | 10 ++++++++++
 server/configure.ac     |  2 +-
 server/synctex_parser.c | 12 +++++-------
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/server/autobuild b/server/autobuild
index 91ee3a52113..46c254e0a4f 100755
--- a/server/autobuild
+++ b/server/autobuild
@@ -332,6 +332,16 @@ os_msys2() {
                       mingw-w64-i686-toolchain
                       mingw-w64-i686-openssl
                       mingw-w64-i686-zlib" ;;
+        UCRT64)
+            PACKAGES="base-devel
+                      autoconf
+                      automake
+                      mingw-w64-ucrt-x86_64-libpng
+                      mingw-w64-ucrt-x86_64-poppler
+                      mingw-w64-ucrt-x86_64-imagemagick
+                      mingw-w64-ucrt-x86_64-toolchain
+                      mingw-w64-ucrt-x86_64-openssl
+                      mingw-w64-ucrt-x86_64-zlib" ;;
         MSYS)
             case $(uname -m) in
                 x86_64)
diff --git a/server/configure.ac b/server/configure.ac
index 9a8c46db712..19369f64098 100644
--- a/server/configure.ac
+++ b/server/configure.ac
@@ -36,7 +36,7 @@ AC_COMPILE_IFELSE(
 AM_CONDITIONAL(HAVE_W32, [test "$have_w32" = true])
 
 if test "$have_w32" = true; then
-  if test "$MSYSTEM" = MINGW32 -o "$MSYSTEM" = MINGW64; then
+  if test "$MSYSTEM" = MINGW32 -o "$MSYSTEM" = MINGW64 -o "$MSYSTEM" = UCRT64; 
then
   # glib won't work properly on msys2 without it.
     CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $CFLAGS"
   fi
diff --git a/server/synctex_parser.c b/server/synctex_parser.c
index 27be60896cb..865c629ed62 100644
--- a/server/synctex_parser.c
+++ b/server/synctex_parser.c
@@ -8415,7 +8415,8 @@ static int _synctex_updater_print(synctex_updater_p 
updater, const char * format
     }
     return result;
 }
-#if defined(_MSC_VER)
+#if defined(_WIN32)
+// define vasprintf as it’s available only on Linux and macOS.
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
@@ -8424,17 +8425,14 @@ static int vasprintf(char **ret,
                      const char *format,
                      va_list ap)
 {
-    int len;
-    len = _vsnprintf(NULL, 0, format, ap);
+    int len = vsnprintf(NULL, 0, format, ap);
     if (len < 0) return -1;
     *ret = malloc(len + 1);
     if (!*ret) return -1;
-    _vsnprintf(*ret, len+1, format, ap);
-    (*ret)[len] = '\0';
-    return len;
+    return vsnprintf(*ret, len + 1, format, ap);
 }
 
-#endif
+#endif // _WIN32
 
 /**
  *  gzvprintf is not available until OSX 10.10

Reply via email to