Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package serd for openSUSE:Factory checked in 
at 2026-08-27 18:48:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/serd (Old)
 and      /work/SRC/openSUSE:Factory/.serd.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "serd"

Thu Aug 27 18:48:57 2026 rev:27 rq:1373762 version:0.32.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/serd/serd.changes        2026-04-11 
22:22:55.951926858 +0200
+++ /work/SRC/openSUSE:Factory/.serd.new.1265/serd.changes      2026-08-27 
18:49:00.700638654 +0200
@@ -1,0 +2,7 @@
+Wed Aug 26 07:25:52 UTC 2026 - Petr Gajdos <[email protected]>
+
+- update to 0.32.10
+  * Address new warnings in clang-tidy 22
+  * Fix writing quotes at the end of long literals
+
+-------------------------------------------------------------------

Old:
----
  serd-0.32.8.tar.xz

New:
----
  serd-0.32.10.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ serd.spec ++++++
--- /var/tmp/diff_new_pack.iftnxd/_old  2026-08-27 18:49:01.557668612 +0200
+++ /var/tmp/diff_new_pack.iftnxd/_new  2026-08-27 18:49:01.559668682 +0200
@@ -22,7 +22,7 @@
 %define with_docs 1
 %endif
 Name:           serd
-Version:        0.32.8
+Version:        0.32.10
 Release:        0
 Summary:        A lightweight C library for RDF syntax
 License:        ISC

++++++ serd-0.32.8.tar.xz -> serd-0.32.10.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/.clang-tidy new/serd-0.32.10/.clang-tidy
--- old/serd-0.32.8/.clang-tidy 2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/.clang-tidy        2026-06-08 23:08:41.000000000 +0200
@@ -1,4 +1,4 @@
-# Copyright 2020-2024 David Robillard <[email protected]>
+# Copyright 2020-2026 David Robillard <[email protected]>
 # SPDX-License-Identifier: 0BSD OR ISC
 
 Checks: >
@@ -10,6 +10,7 @@
   -llvmlibc-*,
   -misc-include-cleaner,
   -readability-identifier-length,
+  -readability-implicit-bool-conversion,
 FormatStyle: file
 HeaderFilterRegex: '.*/serd/.*\.h'
 WarningsAsErrors: '*'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/NEWS new/serd-0.32.10/NEWS
--- old/serd-0.32.8/NEWS        2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/NEWS       2026-06-08 23:08:41.000000000 +0200
@@ -1,3 +1,10 @@
+serd (0.32.10) stable; urgency=medium
+
+  * Address new warnings in clang-tidy 22
+  * Fix writing quotes at the end of long literals
+
+ -- David Robillard <[email protected]>  Mon, 08 Jun 2026 21:08:08 +0000
+
 serd (0.32.8) stable; urgency=medium
 
   * Avoid use of snprintf() when writing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/meson.build new/serd-0.32.10/meson.build
--- old/serd-0.32.8/meson.build 2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/meson.build        2026-06-08 23:08:41.000000000 +0200
@@ -1,4 +1,4 @@
-# Copyright 2021-2024 David Robillard <[email protected]>
+# Copyright 2021-2026 David Robillard <[email protected]>
 # SPDX-License-Identifier: 0BSD OR ISC
 
 project(
@@ -12,7 +12,7 @@
   ],
   license: 'ISC',
   meson_version: '>= 0.56.0',
-  version: '0.32.8',
+  version: '0.32.10',
 )
 
 serd_src_root = meson.current_source_dir()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/src/.clang-tidy 
new/serd-0.32.10/src/.clang-tidy
--- old/serd-0.32.8/src/.clang-tidy     2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/src/.clang-tidy    2026-06-08 23:08:41.000000000 +0200
@@ -2,7 +2,6 @@
 # SPDX-License-Identifier: 0BSD OR ISC
 
 Checks: >
-  -*-macro-to-enum,
   -*-magic-numbers,
   -bugprone-easily-swappable-parameters,
   -bugprone-inc-dec-in-conditions,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/src/base64.c 
new/serd-0.32.10/src/base64.c
--- old/serd-0.32.8/src/base64.c        2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/src/base64.c       2026-06-08 23:08:41.000000000 +0200
@@ -88,7 +88,7 @@
 static size_t
 decode_chunk(const uint8_t in[4], uint8_t out[3])
 {
-  out[0] = (uint8_t)(((unmap(in[0]) << 2)) | unmap(in[1]) >> 4);
+  out[0] = (uint8_t)((unmap(in[0]) << 2) | unmap(in[1]) >> 4);
   out[1] = (uint8_t)(((unmap(in[1]) << 4) & 0xF0) | unmap(in[2]) >> 2);
   out[2] = (uint8_t)(((unmap(in[2]) << 6) & 0xC0) | unmap(in[3]));
   return (size_t)1U + (in[2] != '=') + ((in[2] != '=') && (in[3] != '='));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/src/n3.c new/serd-0.32.10/src/n3.c
--- old/serd-0.32.8/src/n3.c    2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/src/n3.c   2026-06-08 23:08:41.000000000 +0200
@@ -1054,7 +1054,7 @@
   case '9':
     st = read_number(reader, &o, &datatype, ate_dot);
     break;
-  case '\"':
+  case '"':
   case '\'':
     st = read_literal(reader, &o, &datatype, &lang, &flags, ate_dot);
     break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/src/serd_config.h 
new/serd-0.32.10/src/serd_config.h
--- old/serd-0.32.8/src/serd_config.h   2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/src/serd_config.h  2026-06-08 23:08:41.000000000 +0200
@@ -36,7 +36,7 @@
 #define SERD_SRC_SERD_CONFIG_H
 
 // Define version unconditionally so a warning will catch a mismatch
-#define SERD_VERSION "0.32.8"
+#define SERD_VERSION "0.32.10"
 
 #ifndef SERD_NO_DEFAULT_CONFIG
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/src/serd_internal.h 
new/serd-0.32.10/src/serd_internal.h
--- old/serd-0.32.8/src/serd_internal.h 2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/src/serd_internal.h        2026-06-08 23:08:41.000000000 
+0200
@@ -11,7 +11,7 @@
 #define NS_XSD "http://www.w3.org/2001/XMLSchema#";
 #define NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
 
-#define SERD_PAGE_SIZE 4096
+static const unsigned SERD_PAGE_SIZE = 4096U;
 
 #ifndef MIN
 #  define MIN(a, b) (((a) < (b)) ? (a) : (b))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/src/writer.c 
new/serd-0.32.10/src/writer.c
--- old/serd-0.32.8/src/writer.c        2026-02-10 19:02:54.000000000 +0100
+++ new/serd-0.32.10/src/writer.c       2026-06-08 23:08:41.000000000 +0200
@@ -477,9 +477,7 @@
 }
 
 SERD_NODISCARD static size_t
-write_long_string_escape(SerdWriter* const writer,
-                         const size_t      n_consecutive_quotes,
-                         const char        c)
+write_long_string_escape(SerdWriter* const writer, const char c)
 {
   switch (c) {
   case '\\':
@@ -494,13 +492,8 @@
   case '\f':
     return sink(&c, 1, writer); // Write character as-is
 
-  case '\"':
-    if (n_consecutive_quotes >= 3) {
-      // Two quotes in a row, or quote at string end, escape
-      return sink("\\\"", 2, writer);
-    }
-
-    return sink(&c, 1, writer);
+  case '"':
+    return sink("\\\"", 2, writer);
 
   default:
     break;
@@ -547,6 +540,24 @@
   return c == '\\' || c == '"' || !in_range(c, 0x20, 0x7E);
 }
 
+static VariableResult
+write_literal_character(SerdWriter* const    writer,
+                        const uint8_t* const utf8,
+                        const size_t         i,
+                        const size_t         n_bytes)
+{
+  VariableResult vr = {SERD_SUCCESS, 0U, 0U};
+
+  vr = write_text_character(writer, utf8 + i);
+  if (!vr.read_count && !(writer->style & SERD_STYLE_STRICT)) {
+    // Corrupt input, write replacement char and scan to the next start
+    vr.status     = esink(replacement_char, sizeof(replacement_char), writer);
+    vr.read_count = next_text_index(utf8, i, n_bytes, is_utf8_leading);
+  }
+
+  return vr;
+}
+
 SERD_NODISCARD static SerdStatus
 write_short_text(SerdWriter* const    writer,
                  const uint8_t* const utf8,
@@ -561,20 +572,12 @@
       break; // Error or reached end
     }
 
-    // Try to write character as a special short escape (newline and friends)
-    const char   in         = (char)utf8[i];
-    const size_t escape_len = write_short_string_escape(writer, in);
-
+    // Try to write character as a special escape
+    const size_t escape_len = write_short_string_escape(writer, (char)utf8[i]);
     if (!escape_len) {
       // No special escape for this character, write full Unicode escape
-      vr = write_text_character(writer, utf8 + i);
+      vr = write_literal_character(writer, utf8, i, n_bytes);
       i += vr.read_count;
-
-      if (!vr.read_count && !(writer->style & SERD_STYLE_STRICT)) {
-        // Corrupt input, write replacement char and scan to the next start
-        vr.status = esink(replacement_char, sizeof(replacement_char), writer);
-        i += next_text_index(utf8, i, n_bytes, is_utf8_leading);
-      }
     } else {
       ++i;
     }
@@ -602,21 +605,19 @@
       break; // Error or reached end
     }
 
-    // Try to write character as a special long escape (newline and friends)
-    const char in           = (char)utf8[i];
-    n_quotes                = (in == '\"') ? (n_quotes + 1U) : 0;
-    const size_t escape_len = write_long_string_escape(writer, n_quotes, in);
+    // Update consecutive quote count
+    n_quotes = (utf8[i] == '"') ? (n_quotes + 1U) : 0;
+
+    // Try to write character as a special escape
+    const char   c         = (char)utf8[i];
+    const bool   raw_quote = (n_quotes && n_quotes < 3 && i + 1U != n_bytes);
+    const size_t escape_len =
+      raw_quote ? sink(&c, 1, writer) : write_long_string_escape(writer, c);
 
     if (!escape_len) {
       // No special escape for this character, write full Unicode escape
-      vr = write_text_character(writer, utf8 + i);
+      vr = write_literal_character(writer, utf8, i, n_bytes);
       i += vr.read_count;
-
-      if (!vr.read_count && !(writer->style & SERD_STYLE_STRICT)) {
-        // Corrupt input, write replacement char and scan to the next start
-        vr.status = esink(replacement_char, sizeof(replacement_char), writer);
-        i += next_text_index(utf8, i, n_bytes, is_utf8_leading);
-      }
     } else {
       ++i;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/test/extra/perfect/manifest.ttl 
new/serd-0.32.10/test/extra/perfect/manifest.ttl
--- old/serd-0.32.8/test/extra/perfect/manifest.ttl     2026-02-10 
19:02:54.000000000 +0100
+++ new/serd-0.32.10/test/extra/perfect/manifest.ttl    2026-06-08 
23:08:41.000000000 +0200
@@ -17,6 +17,8 @@
                <#test-lang>
                <#test-list>
                <#test-long-whitespace>
+               <#test-short-end-quote>
+               <#test-short-end-two-quotes>
                <#test-triple>
                <#test-uri-escape>
                <#test-uri-query>
@@ -90,6 +92,18 @@
        mf:name "test-long-whitespace" ;
        mf:result <test-long-whitespace.nt> .
 
+<#test-short-end-quote>
+       a rdft:TestTurtleEval ;
+       mf:action <test-short-end-quote.ttl> ;
+       mf:name "test-short-end-quote" ;
+       mf:result <test-short-end-quote.nt> .
+
+<#test-short-end-two-quotes>
+       a rdft:TestTurtleEval ;
+       mf:action <test-short-end-two-quotes.ttl> ;
+       mf:name "test-short-end-two-quotes" ;
+       mf:result <test-short-end-two-quotes.nt> .
+
 <#test-triple>
        a rdft:TestTurtleEval ;
        mf:action <test-triple.ttl> ;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/serd-0.32.8/test/extra/perfect/test-short-end-quote.nt 
new/serd-0.32.10/test/extra/perfect/test-short-end-quote.nt
--- old/serd-0.32.8/test/extra/perfect/test-short-end-quote.nt  1970-01-01 
01:00:00.000000000 +0100
+++ new/serd-0.32.10/test/extra/perfect/test-short-end-quote.nt 2026-06-08 
23:08:41.000000000 +0200
@@ -0,0 +1 @@
+<http://example.org/s> <http://example.org/p> "Ends with a \"quote\"" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/serd-0.32.8/test/extra/perfect/test-short-end-quote.ttl 
new/serd-0.32.10/test/extra/perfect/test-short-end-quote.ttl
--- old/serd-0.32.8/test/extra/perfect/test-short-end-quote.ttl 1970-01-01 
01:00:00.000000000 +0100
+++ new/serd-0.32.10/test/extra/perfect/test-short-end-quote.ttl        
2026-06-08 23:08:41.000000000 +0200
@@ -0,0 +1,2 @@
+<http://example.org/s>
+       <http://example.org/p> "Ends with a \"quote\"" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/serd-0.32.8/test/extra/perfect/test-short-end-two-quotes.nt 
new/serd-0.32.10/test/extra/perfect/test-short-end-two-quotes.nt
--- old/serd-0.32.8/test/extra/perfect/test-short-end-two-quotes.nt     
1970-01-01 01:00:00.000000000 +0100
+++ new/serd-0.32.10/test/extra/perfect/test-short-end-two-quotes.nt    
2026-06-08 23:08:41.000000000 +0200
@@ -0,0 +1 @@
+<http://example.org/s> <http://example.org/p> "Ends with \"two \"quotes\"\"" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/serd-0.32.8/test/extra/perfect/test-short-end-two-quotes.ttl 
new/serd-0.32.10/test/extra/perfect/test-short-end-two-quotes.ttl
--- old/serd-0.32.8/test/extra/perfect/test-short-end-two-quotes.ttl    
1970-01-01 01:00:00.000000000 +0100
+++ new/serd-0.32.10/test/extra/perfect/test-short-end-two-quotes.ttl   
2026-06-08 23:08:41.000000000 +0200
@@ -0,0 +1,2 @@
+<http://example.org/s>
+       <http://example.org/p> "Ends with \"two \"quotes\"\"" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/test/extra/pretty/long-end-quote.ttl 
new/serd-0.32.10/test/extra/pretty/long-end-quote.ttl
--- old/serd-0.32.8/test/extra/pretty/long-end-quote.ttl        1970-01-01 
01:00:00.000000000 +0100
+++ new/serd-0.32.10/test/extra/pretty/long-end-quote.ttl       2026-06-08 
23:08:41.000000000 +0200
@@ -0,0 +1,2 @@
+<http://example.org/s>
+       <http://example.org/p> """Ends with a "quote\"""" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/serd-0.32.8/test/extra/pretty/long-end-two-quotes.ttl 
new/serd-0.32.10/test/extra/pretty/long-end-two-quotes.ttl
--- old/serd-0.32.8/test/extra/pretty/long-end-two-quotes.ttl   1970-01-01 
01:00:00.000000000 +0100
+++ new/serd-0.32.10/test/extra/pretty/long-end-two-quotes.ttl  2026-06-08 
23:08:41.000000000 +0200
@@ -0,0 +1,2 @@
+<http://example.org/s>
+       <http://example.org/p> """Ends with "two "quotes"\"""" .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/serd-0.32.8/test/extra/pretty/manifest.ttl 
new/serd-0.32.10/test/extra/pretty/manifest.ttl
--- old/serd-0.32.8/test/extra/pretty/manifest.ttl      2026-02-10 
19:02:54.000000000 +0100
+++ new/serd-0.32.10/test/extra/pretty/manifest.ttl     2026-06-08 
23:08:41.000000000 +0200
@@ -29,6 +29,8 @@
                <#list-subject-with-extras>
                <#list-subject-with-list-extras>
                <#local-name-escapes>
+               <#long-end-quote>
+               <#long-end-two-quotes>
                <#long-string-escapes>
                <#long-string-quotes>
                <#many-objects>
@@ -182,6 +184,18 @@
        mf:name "local-name-escapes" ;
        mf:result <local-name-escapes.ttl> .
 
+<#long-end-quote>
+       a rdft:TestTurtleEval ;
+       mf:action <long-end-quote.ttl> ;
+       mf:name "long-end-quote" ;
+       mf:result <long-end-quote.ttl> .
+
+<#long-end-two-quotes>
+       a rdft:TestTurtleEval ;
+       mf:action <long-end-two-quotes.ttl> ;
+       mf:name "long-end-two-quotes" ;
+       mf:result <long-end-two-quotes.ttl> .
+
 <#long-string-escapes>
        a rdft:TestTurtleEval ;
        mf:action <long-string-escapes.ttl> ;

Reply via email to