[med-svn] [Git][med-team/htscodecs][master] 5 commits: New upstream version 1.6.1

Étienne Mollier (@emollier) gitlab at salsa.debian.org
Fri Aug 23 11:07:39 BST 2024



Étienne Mollier pushed to branch master at Debian Med / htscodecs


Commits:
53702985 by Étienne Mollier at 2024-08-23T12:01:33+02:00
New upstream version 1.6.1
- - - - -
8be6b7c0 by Étienne Mollier at 2024-08-23T12:01:39+02:00
Update upstream source from tag 'upstream/1.6.1'

Update to upstream version '1.6.1'
with Debian dir 8d76976dab79063986be9ef370af2caa0b91983a
- - - - -
12bbc511 by Étienne Mollier at 2024-08-23T12:02:20+02:00
d/control: declare compliance to standards version 4.7.0.

- - - - -
2827b635 by Étienne Mollier at 2024-08-23T12:05:15+02:00
d/copyright: update copyright years.

- - - - -
a9425835 by Étienne Mollier at 2024-08-23T12:05:42+02:00
Ready for upload to unstable.

- - - - -


16 changed files:

- − .appveyor.yml
- .cirrus.yml
- + .gitattributes
- + .github/workflows/unix-build.yml
- + .github/workflows/windows-build.yml
- NEWS.md
- configure.ac
- debian/changelog
- debian/control
- debian/copyright
- htscodecs/htscodecs.c
- htscodecs/htscodecs.h
- htscodecs/pack.c
- htscodecs/rANS_static.c
- htscodecs/rANS_static4x16pr.c
- htscodecs/tokenise_name3.c


Changes:

=====================================
.appveyor.yml deleted
=====================================
@@ -1,39 +0,0 @@
-# version format.
-# you can use {branch} name in version format too
-# version: 1.0.{build}-{branch}
-version: 'vers.{build}'
-
-# branches to build
-branches:
-    # Blacklist
-    except:
-      - gh-pages
-
-# Do not build on tags (GitHub and BitBucket)
-skip_tags: true
-
-# Skipping commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml
-#skip_commits:
-#  files:
-#    - docs/*
-#    - '**/*.html'
-
-# Appveyor Windows images are based on Visual studio version
-image: Visual Studio 2019
-
-# We use Mingw/Msys, so use pacman for installs
-install:
-  - set HOME=.
-  - set MSYSTEM=MINGW64
-  - set PATH=C:/msys64/usr/bin;C:/msys64/mingw64/bin;%PATH%
-  - set MINGWPREFIX=x86_64-w64-mingw32
-  - "sh -lc \"pacman -S --noconfirm --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-autotools\""
-
-build_script:
-  - set HOME=.
-  - set MSYSTEM=MINGW64
-  - set PATH=C:/msys64/usr/bin;C:/msys64/mingw64/bin;%PATH%
-  - "sh -lc \"autoreconf -i && ./configure --enable-werror CFLAGS='-g -O3 -D_XOPEN_SOURCE=600' && make -j2\""
-
-test_script:
-  - "sh -lc \"make check || (cat tests/test-suite.log; false)\""


=====================================
.cirrus.yml
=====================================
@@ -21,25 +21,6 @@ compile_template: &COMPILE
 # ----------
 # Linux
 
-task:
-  << : *ENVIRONMENT
-  name: linux-gcc
-  container:
-    memory: 1G
-    image: gcc:latest
-
-  # Base environment already includes the packages we need.
-
-  # One system with more excessive validation
-  compile_script:
-    - autoreconf -i
-    - ./configure CC="gcc -fsanitize=address,undefined"
-    - make -j4 CFLAGS="-g -O3 -Wall -Werror"
-
-  test_script:
-    - make check CFLAGS="-g -O3 -Wall -Werror"
-    - make distcheck
-
 task:
   << : *ENVIRONMENT
   name: linux-arm
@@ -48,8 +29,6 @@ task:
     cpu: 2
     memory: 1G
 
-  # Base environment already includes the packages we need.
-
   # NB: we could consider building a docker image with these
   # preinstalled and specifying that instead, to speed up testing.
   install_script: |
@@ -61,10 +40,10 @@ task:
   compile_script:
     - autoreconf -i
     - ./configure CC="clang" --disable-shared
-    - make -j4 CFLAGS="-g -O3 -Wall -Werror"
+    - make -j4 CFLAGS="-g -O3 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter"
 
   test_script:
-    - make check CFLAGS="-g -O3 -Wall -Werror"
+    - make check CFLAGS="-g -O3 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter"
     - make distcheck
 
 # Rocky Linux
@@ -93,70 +72,12 @@ rocky_task:
 
   << : *COMPILE
 
-# ----------
-# MacOS X
-task:
-  << : *ENVIRONMENT
-  name: macosx
-  macos_instance:
-    image: ghcr.io/cirruslabs/macos-ventura-base:latest
-
-  package_install_script:
-    - brew install autoconf automake libtool
-
-  # Try building and testing a multiarch library
-  compile_script:
-    - autoreconf -i
-    - ./configure CFLAGS="-g -O3 -Wall -Werror -arch arm64 -arch x86_64"
-    - make -j4
-
-  test_script:
-    - make check
-
-# # ----------
-# # Windows MINGW.
-# # A work in progress which doesn't yet work.  It looks slow to install
-# # although *_cache can help a bit.  Maybe just stick with AppVeyor.
-# task:
-#   << : *ENVIRONMENT
-#   name: windows-1
-#   windows_container:
-#     image: cirrusci/windowsservercore:2019
-#     os_version: 2019
-# 
-#   # See https://cirrus-ci.org/guide/writing-tasks/#cache-instruction
-#   mingw_cache:
-#     # The entirety of chocholatey is heavyweight, but this is still
-#     # under half the time of installing mingw.
-#     folder: C:\Tools
-# 
-#     # default fingerprint is task name (windows-X above)
-#     populate_script:
-#       # Maybe choco install msys2 and then msys2 pacman to install
-#       # mingw, meaning we can archive the entire C:\tools dir?
-#       # - choco install -y --no-progress msys2 mingw 
-#       # - set PATH=%PATH%;\C:\tools\msys64\usr\bin
-#       # - pacman -S --noconfirm --needed automake libtool autoconf 
-# 
-#       # Msys is glacial, and installs its own broken compiler automatically
-#       # which we then replace with mingw-w64-x86_64-toolchain.
-#       # We a better way of downloading just the packages we need and running
-#       # pacman on the files directly.
-#       - choco install -y --no-progress msys2
-#       - set PATH=%PATH%;\C:\tools\msys64\usr\bin
-#       - pacman -S --noconfirm --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-zlib mingw-w64-x86_64-bzip2 mingw-w64-x86_64-xz
-# 
-#   compile_script:
-#     - c:\tools\msys64\usr\bin\bash --login "autoreconf -i"
-#     - c:\tools\msys64\usr\bin\bash "./configure"
-#     - c:\tools\msys64\usr\bin\bash "make -j4"
-
 # ----------
 # FreeBSD
 task:
   name: freebsd
   freebsd_instance:
-    image_family: freebsd-13-2
+    image_family: freebsd-14-0
 
   pkginstall_script:
     - pkg update -f


=====================================
.gitattributes
=====================================
@@ -0,0 +1,7 @@
+# Github's git changes NL for NL-CR on Windows.
+# We pretend everything is binary so any comparisons of test files
+# work.
+tests/**    -text
+tests/*.c    text
+tests/*.sh   text
+tests/*.test text


=====================================
.github/workflows/unix-build.yml
=====================================
@@ -0,0 +1,45 @@
+# Various unix builds
+name: unix CI
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [ubuntu-latest, macos-latest]
+    
+    defaults:
+      run:
+        shell: bash {0}
+
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout at v4
+
+    # MacOS.  We validate compilation of x86_64 and arm64, but only
+    # test arm64.  This will also be using clang by default
+    - name: macOS specific
+      if: runner.os == 'macOS'
+      run: |
+        brew install autoconf automake libtool
+        autoreconf -i
+        ./configure CFLAGS="-g -O3 -Wall -Werror -arch arm64 -arch x86_64"
+
+    # A slower build and test with address and undefined behaviour sanitizers
+    - name: Ubuntu-latest using gcc with sanitizers
+      if: runner.os == 'Linux'
+      run: |
+        autoreconf -i
+        ./configure CC="gcc -fsanitize=address,undefined"
+
+    - name: Compile
+      run: |
+        make -j6
+
+    - name: Check
+      run: |
+        make check || (cat tests/test-suite.log; false)
+


=====================================
.github/workflows/windows-build.yml
=====================================
@@ -0,0 +1,37 @@
+# A faster alternative to AppVeyor
+name: Windows/MinGW-W64
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    steps:
+    - name: Checkout
+      uses: actions/checkout at v4
+    - name: Set up MSYS2 MinGW-W64
+      uses: msys2/setup-msys2 at v2
+      with:
+        msystem: mingw64
+        update: false
+        install: >-
+          zlib-devel
+          libbz2-devel
+          liblzma-devel
+          mingw-w64-x86_64-toolchain
+          mingw-w64-x86_64-autotools
+          mingw-w64-x86_64-tools-git
+    - name: Compile htscodecs
+      shell: msys2 {0}
+      run: |
+        export PATH=/mingw64/bin:$PATH
+        export MSYSTEM=MINGW64
+        autoreconf -i
+        ./configure --disable-shared CFLAGS='-g -O3 -D_XOPEN_SOURCE=600 -Wall -Werror'
+        make -j8
+    - name: Check htscodecs
+      shell: msys2 {0}
+      run: |
+        export PATH=/mingw64/bin:$PATH
+        export MSYSTEM=MINGW64
+        make check || (cat tests/test-suite.log; false)
+


=====================================
NEWS.md
=====================================
@@ -1,3 +1,32 @@
+Release 1.6.1: 22nd August 2024
+-------------------------------
+
+This release is primarily portability and minor bug fixes.
+
+Changes
+
+- Improve warning levels by the compiler in CI. (#125)
+
+- Switch to GitHub actions for some CI builds. (#121, #123)
+
+- Add configure check for cpuid systems. (#115, #116.  Reported by
+  Ryan Carsten Schmidt)
+
+Bug fixes
+
+- Use unsigned chars for ctype macros in the name tokeniser.
+  On many systems this was already mitigated against, but on some OSes
+  a char > 128 could trigger a buffer underrun. (#124)
+
+- Fix interaction between _XOPEN_SOURCE and FreeBSD.
+  (#119, John Marshall)
+
+- Improve AVX512 compiler support, notably MacOS El Capitan's XCode.
+  (#118, Rob Davies)
+
+- Fix -std=c99 -pendantic pedantry (#117)
+
+
 Release 1.6.0: 7th December 2023
 --------------------------------
 


=====================================
configure.ac
=====================================
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT(htscodecs, 1.6.0)
+AC_INIT(htscodecs, 1.6.1)
 
 # Some functions benefit from -O3 optimisation, so if the user didn't
 # explicitly set any compiler flags, we'll plump for O3.
@@ -61,7 +61,7 @@ AM_EXTRA_RECURSIVE_TARGETS([fuzz])
 #       libhtscodecs.so.1.1.0
 
 VERS_CURRENT=3
-VERS_REVISION=5
+VERS_REVISION=6
 VERS_AGE=1
 AC_SUBST(VERS_CURRENT)
 AC_SUBST(VERS_REVISION)
@@ -120,6 +120,9 @@ AS_IF([test "$ax_cv_builtin_prefetch" = "yes"],
            [Define to 1 if you have a __builtin_prefetch])],
 	[])
 
+dnl Check is cpuid works, needed by rANS_static4x16pr.c.
+AC_CHECK_DECLS([__get_cpuid_max, __cpuid_count], [], [], [[#include <cpuid.h>]])
+
 dnl AC_CHECK_LIB([lzma], [lzma_easy_buffer_encode], [
 dnl 	LIBS="-llzma $LIBS"
 dnl 	AC_DEFINE([HAVE_LIBLZMA],1,[Define to 1 if you have the liblzma library.])])
@@ -185,7 +188,9 @@ HTS_CHECK_COMPILE_FLAGS_NEEDED([avx512f], [-mavx512f -mpopcnt], [AC_LANG_PROGRAM
 	  #ifdef __x86_64__
 	  __m512i a = _mm512_set1_epi32(1);
 	  __m512i b = _mm512_add_epi32(a, a);
-	  return _mm_popcnt_u32(*((char *) &b));
+          __m256i c = _mm512_castsi512_si256(b);
+	  __m256i d = _mm512_extracti64x4_epi64(a, 1);
+	  return _mm_popcnt_u32(*((char *) &c)) + (*(char *) &d);
 	  #endif
 	]])], [
         MAVX512="$flags_needed"


=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+htscodecs (1.6.1-1) unstable; urgency=medium
+
+  * New upstream version 1.6.1
+  * d/control: declare compliance to standards version 4.7.0.
+  * d/copyright: update copyright years.
+
+ -- Étienne Mollier <emollier at debian.org>  Fri, 23 Aug 2024 12:05:34 +0200
+
 htscodecs (1.6.0-1) unstable; urgency=medium
 
   * New upstream version 1.6.0


=====================================
debian/control
=====================================
@@ -7,7 +7,7 @@ Uploaders: Michael R. Crusoe <crusoe at debian.org>,
 Build-Depends: debhelper-compat (= 13),
                d-shlibs,
                libbz2-dev
-Standards-Version: 4.6.2
+Standards-Version: 4.7.0
 Vcs-Browser: https://salsa.debian.org/med-team/htscodecs
 Vcs-Git: https://salsa.debian.org/med-team/htscodecs.git
 Homepage: https://github.com/jkbonfield/htscodecs/


=====================================
debian/copyright
=====================================
@@ -3,7 +3,7 @@ Upstream-Name: htscodecs
 Source: https://github.com/jkbonfield/htscodecs/
 
 Files: *
-Copyright: 2009-2023, Genome Research Ltd.
+Copyright: 2009-2024, Genome Research Ltd.
 License: BSD-3-clause
 
 Files: htscodecs/c_range_coder.h
@@ -26,7 +26,7 @@ Files: debian/*
 Copyright: 2020 Michael R. Crusoe <michael.crusoe at gmail.com>,
            2020-2021 Andreas Tille <tille at debian.org>,
            2021 Steffen Moeller <moeller at debian.org>,
-           2021-2023 Étienne Mollier <emollier at debian.org>
+           2021-2024 Étienne Mollier <emollier at debian.org>
 License: BSD-3-clause
 
 License: BSD-3-clause


=====================================
htscodecs/htscodecs.c
=====================================
@@ -39,6 +39,6 @@
  * NB: This is obtained from the auto-generated version.h, so
  * we can include release number and git hash.
  */
-const char *htscodecs_version() {
+const char *htscodecs_version(void) {
     return HTSCODECS_VERSION_TEXT;
 }


=====================================
htscodecs/htscodecs.h
=====================================
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021-2023 Genome Research Ltd.
+ * Copyright (c) 2021-2024 Genome Research Ltd.
  * Author(s): James Bonfield
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,13 +43,13 @@
  * Note currently this needs manually editing as it isn't automatically
  * updated by autoconf.
  */
-#define HTSCODECS_VERSION 100600
+#define HTSCODECS_VERSION 100601
 
 /*
  * A const string form of the HTSCODECS_VERSION define.
  * NB: This is obtained from the auto-generated version.h, so
  * we can include release number and git hash.
  */
-const char *htscodecs_version();
+const char *htscodecs_version(void);
 
 #endif /* HTSCODECS_H */


=====================================
htscodecs/pack.c
=====================================
@@ -109,8 +109,8 @@ uint8_t *hts_pack(uint8_t *data, int64_t len,
         out[j] = 0;
         int s = len-i, x = 0;
         switch (s) {
-        case 3: out[j] |= p[data[i++]] << x; x+=2;
-        case 2: out[j] |= p[data[i++]] << x; x+=2;
+        case 3: out[j] |= p[data[i++]] << x; x+=2; // fall-through
+        case 2: out[j] |= p[data[i++]] << x; x+=2; // fall-through
         case 1: out[j] |= p[data[i++]] << x; x+=2;
             j++;
         }
@@ -125,12 +125,12 @@ uint8_t *hts_pack(uint8_t *data, int64_t len,
         out[j] = 0;
         int s = len-i, x = 0;
         switch (s) {
-        case 7: out[j] |= p[data[i++]] << x++;
-        case 6: out[j] |= p[data[i++]] << x++;
-        case 5: out[j] |= p[data[i++]] << x++;
-        case 4: out[j] |= p[data[i++]] << x++;
-        case 3: out[j] |= p[data[i++]] << x++;
-        case 2: out[j] |= p[data[i++]] << x++;
+        case 7: out[j] |= p[data[i++]] << x++; // fall-through
+        case 6: out[j] |= p[data[i++]] << x++; // fall-through
+        case 5: out[j] |= p[data[i++]] << x++; // fall-through
+        case 4: out[j] |= p[data[i++]] << x++; // fall-through
+        case 3: out[j] |= p[data[i++]] << x++; // fall-through
+        case 2: out[j] |= p[data[i++]] << x++; // fall-through
         case 1: out[j] |= p[data[i++]] << x++;
             j++;
         }


=====================================
htscodecs/rANS_static.c
=====================================
@@ -167,8 +167,11 @@ unsigned char *rans_compress_O0(unsigned char *in, unsigned int in_size,
 
     switch (i=(in_size&3)) {
     case 3: RansEncPutSymbol(&rans2, &ptr, &syms[in[in_size-(i-2)]]);
+        // fall-through
     case 2: RansEncPutSymbol(&rans1, &ptr, &syms[in[in_size-(i-1)]]);
+        // fall-through
     case 1: RansEncPutSymbol(&rans0, &ptr, &syms[in[in_size-(i-0)]]);
+        // fall-through
     case 0:
         break;
     }
@@ -361,10 +364,13 @@ unsigned char *rans_uncompress_O0(unsigned char *in, unsigned int in_size,
     switch(out_sz&3) {
     case 3:
         out_buf[out_end + 2] = ssym[R[2] & mask];
+        // fall-through
     case 2:
         out_buf[out_end + 1] = ssym[R[1] & mask];
+        // fall-through
     case 1:
         out_buf[out_end] = ssym[R[0] & mask];
+        // fall-through
     default:
         break;
     }


=====================================
htscodecs/rANS_static4x16pr.c
=====================================
@@ -176,8 +176,11 @@ unsigned char *rans_compress_O0_4x16(unsigned char *in, unsigned int in_size,
 
     switch (i=(in_size&3)) {
     case 3: RansEncPutSymbol(&rans2, &ptr, &syms[in[in_size-(i-2)]]);
+        // fall-through
     case 2: RansEncPutSymbol(&rans1, &ptr, &syms[in[in_size-(i-1)]]);
+        // fall-through
     case 1: RansEncPutSymbol(&rans0, &ptr, &syms[in[in_size-(i-0)]]);
+        // fall-through
     case 0:
         break;
     }
@@ -824,8 +827,9 @@ unsigned char *rans_uncompress_O1_4x16(unsigned char *in, unsigned int in_size,
 
 static int rans_cpu = 0xFFFF; // all
 
-#if (defined(__GNUC__) || defined(__clang__)) && defined(__x86_64__)
-// Icc and Clang both also set __GNUC__ on linux, but not on Windows.
+#if defined(__x86_64__) && \
+    defined(HAVE_DECL___CPUID_COUNT)   && HAVE_DECL___CPUID_COUNT && \
+    defined(HAVE_DECL___GET_CPUID_MAX) && HAVE_DECL___GET_CPUID_MAX
 #include <cpuid.h>
 
 #if defined(__clang__) && defined(__has_attribute)
@@ -1034,7 +1038,7 @@ unsigned char *(*rans_dec_func(int do_simd, int order))
 #include <processthreadsapi.h>
 #endif
 
-static inline int have_neon() {
+static inline int have_neon(void) {
 #if defined(__linux__) && defined(__arm__)
     return (getauxval(AT_HWCAP) & HWCAP_NEON) != 0;
 #elif defined(__linux__) && defined(__aarch64__) && defined(HWCAP_ASIMD)
@@ -1042,11 +1046,11 @@ static inline int have_neon() {
 #elif defined(__APPLE__)
     return 1;
 #elif defined(__FreeBSD__) && defined(__arm__)
-    u_long cap;
+    unsigned long cap;
     if (elf_aux_info(AT_HWCAP, &cap, sizeof cap) != 0) return 0;
     return (cap & HWCAP_NEON) != 0;
 #elif defined(__FreeBSD__) && defined(__aarch64__) && defined(HWCAP_ASIMD)
-    u_long cap;
+    unsigned long cap;
     if (elf_aux_info(AT_HWCAP, &cap, sizeof cap) != 0) return 0;
     return (cap & HWCAP_ASIMD) != 0;
 #elif defined(_WIN32)


=====================================
htscodecs/tokenise_name3.c
=====================================
@@ -232,15 +232,15 @@ static void free_context(name_context *ctx) {
 // Returns number of bytes written.
 static int append_uint32_fixed(char *cp, uint32_t i, uint8_t l) {
     switch (l) {
-    case 9:*cp++ = i / 100000000 + '0', i %= 100000000;
-    case 8:*cp++ = i / 10000000  + '0', i %= 10000000;
-    case 7:*cp++ = i / 1000000   + '0', i %= 1000000;
-    case 6:*cp++ = i / 100000    + '0', i %= 100000;
-    case 5:*cp++ = i / 10000     + '0', i %= 10000;
-    case 4:*cp++ = i / 1000      + '0', i %= 1000;
-    case 3:*cp++ = i / 100       + '0', i %= 100;
-    case 2:*cp++ = i / 10        + '0', i %= 10;
-    case 1:*cp++ = i             + '0';
+    case 9:*cp++ = i / 100000000 + '0', i %= 100000000; // fall-through
+    case 8:*cp++ = i / 10000000  + '0', i %= 10000000;  // fall-through
+    case 7:*cp++ = i / 1000000   + '0', i %= 1000000;   // fall-through
+    case 6:*cp++ = i / 100000    + '0', i %= 100000;    // fall-through
+    case 5:*cp++ = i / 10000     + '0', i %= 10000;     // fall-through
+    case 4:*cp++ = i / 1000      + '0', i %= 1000;      // fall-through
+    case 3:*cp++ = i / 100       + '0', i %= 100;       // fall-through
+    case 2:*cp++ = i / 10        + '0', i %= 10;        // fall-through
+    case 1:*cp++ = i             + '0';                 // fall-throuhg
     case 0:break;
     }
     return l;
@@ -765,19 +765,20 @@ static int encode_name(name_context *ctx, char *name, int len, int mode) {
         }
 
         /* Determine data type of this segment */
-        if (isalpha(name[i])) {
+        if (isalpha((uint8_t)name[i])) {
             int s = i+1;
 //          int S = i+1;
 
 //          // FIXME: try which of these is best.  alnum is good sometimes.
-//          while (s < len && isalpha(name[s]))
-            while (s < len && (isalpha(name[s]) || ispunct(name[s])))
+//          while (s < len && isalpha((uint8_t)name[s]))
+            while (s < len && (isalpha((uint8_t)name[s]) ||
+                               ispunct((uint8_t)name[s])))
 //          while (s < len && name[s] != ':')
-//          while (s < len && !isdigit(name[s]) && name[s] != ':')
+//          while (s < len && !isdigit((uint8_t)name[s]) && name[s] != ':')
                 s++;
 
 //          if (!is_fixed) {
-//              while (S < len && isalnum(name[S]))
+//              while (S < len && isalnum((uint8_t)name[S]))
 //                  S++;
 //              if (s < S)
 //                  s = S;
@@ -821,7 +822,7 @@ static int encode_name(name_context *ctx, char *name, int len, int mode) {
             uint32_t v = 0;
             int d = 0;
 
-            while (s < len && isdigit(name[s]) && s-i < 9) {
+            while (s < len && isdigit((uint8_t)name[s]) && s-i < 9) {
                 v = v*10 + name[s] - '0';
                 //putchar(name[s]);
                 s++;
@@ -866,13 +867,13 @@ static int encode_name(name_context *ctx, char *name, int len, int mode) {
             ctx->lc[cnum].last[ntok].token_type = N_DIGITS0;
 
             i = s-1;
-        } else if (isdigit(name[i])) {
+        } else if (isdigit((uint8_t)name[i])) {
             // digits starting 1-9; encode value
             uint32_t s = i;
             uint32_t v = 0;
             int d = 0;
 
-            while (s < len && isdigit(name[s]) && s-i < 9) {
+            while (s < len && isdigit((uint8_t)name[s]) && s-i < 9) {
                 v = v*10 + name[s] - '0';
                 //putchar(name[s]);
                 s++;
@@ -938,7 +939,7 @@ static int encode_name(name_context *ctx, char *name, int len, int mode) {
             i = s-1;
         } else {
         n_char:
-            //if (!isalpha(name[i])) putchar(name[i]);
+            //if (!isalpha((uint8_t)name[i])) putchar(name[i]);
             if (pnum < cnum && ntok < ctx->lc[pnum].last_ntok && ctx->lc[pnum].last[ntok].token_type == N_CHAR) {
                 if (name[i] == ctx->lc[pnum].last[ntok].token_int) {
 #ifdef ENC_DEBUG



View it on GitLab: https://salsa.debian.org/med-team/htscodecs/-/compare/b39d1917926519d6907669b57a5e87e6c8de81d5...a9425835199e2fe2b7eb86429bad5b086f36f7c8

-- 
View it on GitLab: https://salsa.debian.org/med-team/htscodecs/-/compare/b39d1917926519d6907669b57a5e87e6c8de81d5...a9425835199e2fe2b7eb86429bad5b086f36f7c8
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20240823/bb26daef/attachment-0001.htm>


More information about the debian-med-commit mailing list