]> git.donarmstrong.com Git - samtools.git/commitdiff
Temporary fix to prevent segfault in kpa_glocal
authorPetr Danecek <pd3@sanger.ac.uk>
Mon, 2 Apr 2012 11:40:37 +0000 (12:40 +0100)
committerPetr Danecek <pd3@sanger.ac.uk>
Mon, 2 Apr 2012 11:40:37 +0000 (12:40 +0100)
kprobaln.c

index 894a2ae625f9e0b2b9d38337b8651d8f02bcce4a..04e526a1c3b639f29c8265f2c3f638c2c40abcb0 100644 (file)
@@ -77,6 +77,8 @@ int kpa_glocal(const uint8_t *_ref, int l_ref, const uint8_t *_query, int l_quer
        const uint8_t *ref, *query;
        int bw, bw2, i, k, is_diff = 0, is_backward = 1, Pr;
 
+    if ( l_ref<=0 || l_query<=0 ) return 0; // FIXME: this may not be an ideal fix, just prevents sefgault
+
        /*** initialization ***/
        is_backward = state && q? 1 : 0;
        ref = _ref - 1; query = _query - 1; // change to 1-based coordinate
@@ -87,7 +89,7 @@ int kpa_glocal(const uint8_t *_ref, int l_ref, const uint8_t *_query, int l_quer
        // allocate the forward and backward matrices f[][] and b[][] and the scaling array s[]
        f = calloc(l_query+1, sizeof(void*));
        if (is_backward) b = calloc(l_query+1, sizeof(void*));
-       for (i = 0; i <= l_query; ++i) {
+       for (i = 0; i <= l_query; ++i) {    // FIXME: this will lead in segfault for l_query==0
                f[i] = calloc(bw2 * 3 + 6, sizeof(double)); // FIXME: this is over-allocated for very short seqs
                if (is_backward) b[i] = calloc(bw2 * 3 + 6, sizeof(double));
        }