56c62f013dd8856abb05d493eea07c544d5cb10d
angie
  Wed Oct 23 11:34:34 2013 -0700
When doing a single-region query, if we don't get any results fromthe query, set self->eof so there isn't infinite recursion in
asdNextRow (thanks to nextRowFromBuffer setting self->needQuery
because the buffer is empty).
fixes #11988
refs #11110

diff --git src/hg/lib/annoStreamDb.c src/hg/lib/annoStreamDb.c
index cfe4a12..db36f42 100644
--- src/hg/lib/annoStreamDb.c
+++ src/hg/lib/annoStreamDb.c
@@ -289,30 +289,32 @@
     if (self->hasBin)
 	{
 	if (self->doNextChunk && self->gotFinestBin)
 	    // It would be way more elegant to make a hAddBinTopLevelOnly but this will do:
 	    dyStringPrintf(query, "bin > %d and ", self->minFinestBin);
 	hAddBinToQuery(start, sSelf->regionEnd, query);
 	}
     if (self->doNextChunk)
 	sqlDyStringPrintf(query, "%s >= %u and ", self->startField, self->nextChunkStart);
     sqlDyStringPrintf(query, "%s < %u and %s > %u ", self->startField, sSelf->regionEnd,
 		      self->endField, start);
     if (self->notSorted)
 	sqlDyStringPrintf(query, "order by %s ", self->startField);
     sqlDyStringPrintf(query, "limit %d", queryMaxItems);
     bufferRowsFromSqlQuery(self, query->string, queryMaxItems);
+    if (self->rowBuf.size == 0)
+	self->eof = TRUE;
     }
 else
     {
     // Genome-wide query: break it into chrom-by-chrom queries.
     if (self->queryChrom == NULL)
 	self->queryChrom = self->chromList;
     else if (!self->doNextChunk)
 	{
 	self->queryChrom = self->queryChrom->next;
 	resetMergeState(self);
 	}
     if (minChrom != NULL)
 	{
 	// Skip chroms that precede minChrom
 	while (self->queryChrom != NULL && strcmp(self->queryChrom->name, minChrom) < 0)