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> ;
