51aa3926269ede11330a0564c6f67be38b06f825 galt Fri Apr 22 12:47:17 2011 -0700 blat segfault fix for maxIntron <= 11 when tileSize <= 11 diff --git src/jkOwnLib/ffAliHelp.c src/jkOwnLib/ffAliHelp.c index be59241..0ff2dae 100644 --- src/jkOwnLib/ffAliHelp.c +++ src/jkOwnLib/ffAliHelp.c @@ -276,45 +276,52 @@ boolean ffSlideIntrons(struct ffAli *ali) /* Slide introns (or spaces between aligned blocks) * to match consensus. Return TRUE if any slid. */ { int orient = ffIntronOrientation(ali); return ffSlideOrientedIntrons(ali, orient); } struct ffAli *ffRemoveEmptyAlis(struct ffAli *ali, boolean doFree) /* Remove empty blocks from list. Optionally free empties too. */ { struct ffAli *leftAli; struct ffAli *startAli; struct ffAli *rightAli; +if (ali == NULL) + return NULL; + /* Figure out left most non-empty ali. */ while (ali->left) ali = ali->left; while (ali) { /* If current ali is empty, chuck it out. */ if (ali->nEnd <= ali->nStart || ali->hEnd <= ali->hStart) { struct ffAli *empty = ali; ali = ali->right; if (doFree) freeMem(empty); } else break; } + +if (ali == NULL) + return NULL; + ali->left = NULL; /* Get rid of empty middle alis. */ startAli = leftAli = ali; ali = ali->right; while (ali) { rightAli = ali->right; if (ali->nEnd <= ali->nStart || ali->hEnd <= ali->hStart) { leftAli->right = rightAli; if (rightAli != NULL) rightAli->left = leftAli; if (doFree) freeMem(ali); }