Your message dated Tue, 13 Oct 2026 19:49:32 +0000
with message-id <[email protected]>
and subject line Bug#1150796: fixed in chr 0.1.82-1
has caused the Debian Bug report #1150796,
regarding chr: Fix SIGSEGV in test suite search section
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
1150796: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1150796
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: chr
Version: 0.1.81-1
Severity: normal
Tags: patch
User: [email protected]
Usertags: origin-ubuntu stonking

Dear Maintainer,

In Ubuntu stonking (and environments with Qt 6.11 / LTO / _FORTIFY_SOURCE=3),
the test suite crashes with a segmentation fault in SECTION("search")
at src/tests/filetests.cpp:786:

  actions
    search
  ../src/tests/filetests.cpp:786: FAILED:
  due to a fatal error condition:
    SIGSEGV - Segmentation violation signal
  1/1 editor:tests FAIL killed by signal 11 SIGSEGV

This happens because File instances are allocated with new and leaked in
the test cases. Leaked instances remain registered in the Qt event loop,
and when their terminal is destroyed, incoming events (such as
cursorPositionChanged) trigger a use-after-free SIGSEGV.

Upstream resolved this in commit 294293edbaf9ba03f169c25e88005dca5f9b79e5
("tests: filetests: Use unique_ptr to avoid File leaks.") by managing
File instances with std::unique_ptr.

The attached patch backports this fix to 0.1.81-1. With this patch applied,
all 12 test cases pass without errors.

Ubuntu bug: https://bugs.launchpad.net/ubuntu/+source/chr/+bug/2170633

Thanks,
Viktor Pashaiev
Description: Fix SIGSEGV in test suite search section
 Use unique_ptr to avoid File leaks in tests. Leaking File instances
 can cause old instances to still be active in the event loop after
 their terminal class is already gone, causing a use-after-free
 SIGSEGV during cursorPositionChanged signal handling in the search test.
Author: Martin Hostettler <[email protected]>
Origin: upstream, https://github.com/chr-editor/chr/commit/294293edbaf9ba03f169c25e88005dca5f9b79e5
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/chr/+bug/2170633
Last-Update: 2026-10-13
---
diff --git a/src/tests/filetests.cpp b/src/tests/filetests.cpp
index 425c623..bf72092 100644
--- a/src/tests/filetests.cpp
+++ b/src/tests/filetests.cpp
@@ -41,12 +41,12 @@ TEST_CASE("file") {
     terminal.setMainWidget(&root);
     w->setGeometry({0, 0, 80, 24});
 
-    File *f = new File(terminal.textMetrics(), w);
+    auto f = std::make_unique<File>(terminal.textMetrics(), w);
     f->setFocus();
     f->setGeometry({0, 0, 80, 24});
 
     DocumentTestHelper t;
-    Tui::ZDocument &doc = t.getDoc(f);
+    Tui::ZDocument &doc = t.getDoc(f.get());
     Tui::ZDocumentCursor cursor{&doc, [&terminal,&doc](int line, bool wrappingAllowed) {
             (void)wrappingAllowed;
             Tui::ZTextLayout lay(terminal.textMetrics(), doc.line(line));
@@ -169,11 +169,11 @@ TEST_CASE("file-getseter") {
     terminal.setMainWidget(&root);
     w->setGeometry({0, 0, 80, 24});
 
-    File *f = new File(terminal.textMetrics(), w);
+    auto f = std::make_unique<File>(terminal.textMetrics(), w);
 
     DocumentTestHelper t;
 
-    Tui::ZDocument &doc = t.getDoc(f);
+    Tui::ZDocument &doc = t.getDoc(f.get());
     Tui::ZDocumentCursor cursor{&doc, [&terminal,&doc](int line, bool wrappingAllowed) {
             (void)wrappingAllowed;
             Tui::ZTextLayout lay(terminal.textMetrics(), doc.line(line));
@@ -313,11 +313,11 @@ TEST_CASE("actions") {
     terminal.setMainWidget(&root);
     w->setGeometry({0, 0, 80, 24});
 
-    File *f = new File(terminal.textMetrics(), w);
+    auto f = std::make_unique<File>(terminal.textMetrics(), w);
 
     DocumentTestHelper t;
 
-    Tui::ZDocument &doc = t.getDoc(f);
+    Tui::ZDocument &doc = t.getDoc(f.get());
     Tui::ZDocumentCursor cursor{&doc, [&terminal,&doc](int line, bool wrappingAllowed) {
             (void)wrappingAllowed;
             Tui::ZTextLayout lay(terminal.textMetrics(), doc.line(line));
@@ -785,31 +785,31 @@ TEST_CASE("actions") {
 
     SECTION("search") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{8,1});
         f->setSearchText("t");
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(false, &terminal, f);
+        t.f3(false, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{5,0});
 
         recorder.clearEvents();
-        t.f3(false, &terminal, f);
+        t.f3(false, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{8,0});
 
         recorder.clearEvents();
-        t.f3(false, &terminal, f);
+        t.f3(false, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{5,0});
         recorder.clearEvents();
     }
     SECTION("search-t") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -829,7 +829,7 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{1,0});
         recorder.clearEvents();
@@ -845,7 +845,7 @@ TEST_CASE("actions") {
     }
     SECTION("search-t-t") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -865,19 +865,19 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{1,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{3,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{1,0});
         recorder.clearEvents();
@@ -886,7 +886,7 @@ TEST_CASE("actions") {
 
     SECTION("search-space-t-t") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool reg = GENERATE(true, false);
         CAPTURE(reg);
@@ -902,19 +902,19 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(false, &terminal, f);
+        t.f3(false, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(false, &terminal, f);
+        t.f3(false, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{4,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(false, &terminal, f);
+        t.f3(false, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
@@ -923,7 +923,7 @@ TEST_CASE("actions") {
 
     SECTION("searchBackword-space-t-t") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool reg = GENERATE(true, false);
         CAPTURE(reg);
@@ -939,19 +939,19 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(true, &terminal, f);
+        t.f3(true, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{4,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(true, &terminal, f);
+        t.f3(true, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(true, &terminal, f);
+        t.f3(true, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{4,0});
         recorder.clearEvents();
@@ -960,7 +960,7 @@ TEST_CASE("actions") {
 
     SECTION("search-t-newline-t") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -979,19 +979,19 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{1,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{1,1});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{1,0});
         recorder.clearEvents();
@@ -1000,7 +1000,7 @@ TEST_CASE("actions") {
 
     SECTION("search-t-newline-space-t") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -1019,19 +1019,19 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,1});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
@@ -1040,7 +1040,7 @@ TEST_CASE("actions") {
 
     SECTION("search-aa") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -1060,13 +1060,13 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{3,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,1});
         recorder.clearEvents();
@@ -1075,7 +1075,7 @@ TEST_CASE("actions") {
 
     SECTION("search-aa-aa") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -1104,7 +1104,7 @@ TEST_CASE("actions") {
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
         for (Tui::ZDocumentCursor::Position point : positions) {
-            t.f3(backward, &terminal, f);
+            t.f3(backward, &terminal, f.get());
             recorder.waitForEvent(cursorSignal);
             CHECK(f->cursorPosition() == point);
             recorder.clearEvents();
@@ -1114,7 +1114,7 @@ TEST_CASE("actions") {
 
     SECTION("search-asd") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool reg = GENERATE(true, false);
         CAPTURE(reg);
@@ -1131,7 +1131,7 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(true, &terminal, f);
+        t.f3(true, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{3,0});
         recorder.clearEvents();
@@ -1141,7 +1141,7 @@ TEST_CASE("actions") {
 
     SECTION("search-forward-backward") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool reg = GENERATE(true, false);
         CAPTURE(reg);
@@ -1162,13 +1162,13 @@ TEST_CASE("actions") {
 
         SECTION("toggel-wraparound") {
             for(int i = 0; i < 3; i++) {
-                t.f3(false, &terminal, f);
+                t.f3(false, &terminal, f.get());
                 recorder.waitForEvent(cursorSignal);
                 CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
                 recorder.clearEvents();
                 CHECK(f->hasSelection() == true);
 
-                t.f3(true, &terminal, f);
+                t.f3(true, &terminal, f.get());
                 recorder.waitForEvent(cursorSignal);
                 CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,2});
                 recorder.clearEvents();
@@ -1182,7 +1182,7 @@ TEST_CASE("actions") {
             positions << Tui::ZDocumentCursor::Position{2,1} << Tui::ZDocumentCursor::Position{2,0} << Tui::ZDocumentCursor::Position{2,1} << Tui::ZDocumentCursor::Position{2,2} << Tui::ZDocumentCursor::Position{2,0} << Tui::ZDocumentCursor::Position{2,2} << Tui::ZDocumentCursor::Position{2,1};
             bool backward = true;
             for (Tui::ZDocumentCursor::Position point : positions) {
-                t.f3(backward, &terminal, f);
+                t.f3(backward, &terminal, f.get());
                 recorder.waitForEvent(cursorSignal);
                 CHECK(f->cursorPosition() == point);
                 recorder.clearEvents();
@@ -1196,7 +1196,7 @@ TEST_CASE("actions") {
 
     SECTION("search-smiley") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -1215,13 +1215,13 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{4,0});
         recorder.clearEvents();
@@ -1230,7 +1230,7 @@ TEST_CASE("actions") {
 
     SECTION("search-smiley-multiline") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
 
         bool backward = GENERATE(true, false);
         CAPTURE(backward);
@@ -1249,13 +1249,13 @@ TEST_CASE("actions") {
 
         recorder.waitForEvent(cursorSignal);
         recorder.clearEvents();
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,0});
         recorder.clearEvents();
         CHECK(f->hasSelection() == true);
 
-        t.f3(backward, &terminal, f);
+        t.f3(backward, &terminal, f.get());
         recorder.waitForEvent(cursorSignal);
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{2,1});
         recorder.clearEvents();
@@ -1264,7 +1264,7 @@ TEST_CASE("actions") {
 
     SECTION("replace") {
         EventRecorder recorder;
-        auto cursorSignal = recorder.watchSignal(f, RECORDER_SIGNAL(&File::cursorPositionChanged));
+        auto cursorSignal = recorder.watchSignal(f.get(), RECORDER_SIGNAL(&File::cursorPositionChanged));
         CHECK(f->cursorPosition() == Tui::ZDocumentCursor::Position{8,1});
 
         f->replaceAll("1","2");
@@ -1295,12 +1295,12 @@ TEST_CASE("multiline") {
     terminal.setMainWidget(&root);
     w->setGeometry({0, 0, 80, 24});
 
-    File *f = new File(terminal.textMetrics(), w);
+    auto f = std::make_unique<File>(terminal.textMetrics(), w);
     f->setFocus();
     f->setGeometry({0, 0, 80, 24});
 
     DocumentTestHelper t;
-    Tui::ZDocument &doc = t.getDoc(f);
+    Tui::ZDocument &doc = t.getDoc(f.get());
     Tui::ZDocumentCursor cursor{&doc, [&terminal,&doc](int line, bool wrappingAllowed) {
             (void)wrappingAllowed;
             Tui::ZTextLayout lay(terminal.textMetrics(), doc.line(line));

--- End Message ---
--- Begin Message ---
Source: chr
Source-Version: 0.1.82-1
Done: Christoph Hueffelmann <[email protected]>

We believe that the bug you reported is fixed in the latest version of
chr, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Christoph Hueffelmann <[email protected]> (supplier of updated chr package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Tue, 13 Oct 2026 20:04:13 +0200
Source: chr
Architecture: source
Version: 0.1.82-1
Distribution: unstable
Urgency: medium
Maintainer: Christoph Hueffelmann <[email protected]>
Changed-By: Christoph Hueffelmann <[email protected]>
Closes: 1150796
Changes:
 chr (0.1.82-1) unstable; urgency=medium
 .
   * Fix memory leaks in tests. (Closes: #1150796)
Checksums-Sha1:
 7d4ab56105623b9da899c915c487c925f0ba3f25 2195 chr_0.1.82-1.dsc
 0b0366dbbbed4b0a6bb84c55ef083e650108445b 224151 chr_0.1.82.orig.tar.gz
 3a21d8575f63a9d7fdaa35450089f19f8b4b63e7 4204 chr_0.1.82-1.debian.tar.xz
 bfe36f16b14d605865767351665a2cf831eebeb2 16044 chr_0.1.82-1_source.buildinfo
Checksums-Sha256:
 bdff39392a1497c9e6a1a8d22a4fa75c1e0fb269fed875f756de94703efa5364 2195 
chr_0.1.82-1.dsc
 276cae9337ac373e6dca884743d4e944905767f22e68fd23bfabea2a184bf69d 224151 
chr_0.1.82.orig.tar.gz
 f62bc98d64ffe3352e1cc74fa3eaab81ff151f07f96f7cd0d7804386caa7042f 4204 
chr_0.1.82-1.debian.tar.xz
 39640c2c79d7732406d587841cf0972e8f3aba3e0c9cb8ac0711956569f2bf00 16044 
chr_0.1.82-1_source.buildinfo
Files:
 b68a8e19deb4b0fb810386698572eaca 2195 editors optional chr_0.1.82-1.dsc
 ba0c06e27db97d38c2d72d66d12490a6 224151 editors optional chr_0.1.82.orig.tar.gz
 9fdae46d9f4abe0d644be006ede41121 4204 editors optional 
chr_0.1.82-1.debian.tar.xz
 4360b3c2dbe0659764019f59f4de8f71 16044 editors optional 
chr_0.1.82-1_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEtgob82PcExn/Co6JEWhSvN91FcAFAmrOh5EACgkQEWhSvN91
FcC5KQ//SggGFtyEqwWekUKIgdW31jS+9d3bfu5jrI8T8tCbfilE1N5fCkJ08xcm
+OZlhF6kSHOSYkcQzKqBwqrtfhGJwQDSBwwpic48uQSXN/KW6HfnR5GO/JMV/h5L
13dXHjgJRkn2b19I6AW1Ugj30DP71vBDhwwqN4dut4XMolvILNLooBHXOmO5g6N4
XebtJMFuTlULqPAMxthrbLMTP7swnluooGPyhkTTpaFHdWRJrfSze7cDyKrWrGIv
M1hc1RD0e5PtRQ/UCu8zt/zSKey+ia9V04VtfwaGcWJZHqYnr954rNzYAbDIAeJu
Mq82jClOjS+icF+9SbmqNRiHuCLz/NbGZYjy5UoFpiT2In5kfar5/ZiSx0M02jhG
/x/ofqRvTHlODAg8ac849YuuMMQbfZ7YCzsOBxTyjbVAGA+dQBl1+NnBLfIk61dS
KCVkUC1S/+diXEqCIGoBPRArS0XEn4Cqy4kB2Lz69yn6Bfb9pVuyAc7zr02aMDXG
1n5Ggrx7JspHobLlRuGGQYpnUUAOIL83/aGxDc+mSP+ImT4yUgo/9TmSjprFPAFK
+3i7S0BxUe5YoYIIUkl0OP5CqqH0HdIIKlomdxz/i9xte1Cyg456NosHCjPOFlNO
nPJD4lRcmrKzbRnJii7YNLNG2ZxKu7pVFcSWJeEdm5KZL5nbuzg=
=iGIk
-----END PGP SIGNATURE-----

Attachment: pgpEs9FAr47nz.pgp
Description: PGP signature


--- End Message ---

Reply via email to