[Debian-med-packaging] Bug#956232: sumaclust: Last sequence of input is skipped on arm64

Pierre Gruet pgtdebian at free.fr
Wed Apr 8 18:21:54 BST 2020


Package: sumaclust
Version: 1.0.35-2
Severity: normal
Tags: patch upstream

Version 1.0.35-2 of sumaclust runs on arm64 but the last sequence of input files is always skipped.
This appears to be linked to the way sequences are read in libfasta/sequence.c. I have proposed a patch to upstream, which seems to solve the problem. I am waiting for its opinion on it.

Best,
Pierre
-------------- next part --------------
From: Pierre Gruet <pgtdebian at free.fr>
Date: Wed, 8 Apr 2020 11:18:01 +0200
Subject: Reading only-ACGT sequences safely

---
 sumalibs/libfasta/sequence.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/sumalibs/libfasta/sequence.c b/sumalibs/libfasta/sequence.c
index 2cf3d10..db999f8 100755
--- a/sumalibs/libfasta/sequence.c
+++ b/sumalibs/libfasta/sequence.c
@@ -162,19 +162,25 @@ void seq_fillSeqOnlyATGC(char *seq, fastaSeqPtr seqElem, int seqLen)
 {
 	char* seqTemp;
 	char c;
-	int32_t index = 0, seqIndex = 0, len = strlen(seq);
+	int32_t index = 1, seqIndex = 0, len = strlen(seq);
 	char* seqAlphabets = "acgtACGT";
 	int notAllATGC = 0;
+        int goOnParsing = 1;
 
 	seqTemp = (char*) util_malloc(seqLen*sizeof(char), __FILE__, __LINE__);
 
-	while (index < len)
+	while (goOnParsing)
 	{
 		c = seq[index++];
 		if (strchr(seqAlphabets, c) != NULL)
 			seqTemp[seqIndex++] = tolower(c);
+                else if (c == '\n')
+                        goOnParsing = 0; //End of line character terminating the sequence has been reached.
 		else if (c != '\n')
 			notAllATGC = 1;
+                
+                if (index == len)
+                        goOnParsing = 0;
 	}
 
 	if (notAllATGC)


More information about the Debian-med-packaging mailing list