Index: test/unit/search/tc_multiple_search_requests.rb
===================================================================
--- test/unit/search/tc_multiple_search_requests.rb	(revision 0)
+++ test/unit/search/tc_multiple_search_requests.rb	(revision 0)
@@ -0,0 +1,60 @@
+require File.dirname(__FILE__) + "/../../test_helper"
+
+class MultipleSearchRequestsTest < Test::Unit::TestCase
+  include Ferret::Document
+  include Ferret::Search
+  include Ferret::Store
+  include Ferret::Analysis
+  include Ferret::Index
+
+  def setup()
+    dpath = File.expand_path(File.join(File.dirname(__FILE__),
+                       '../../temp/fsdir'))
+    fs_dir = Ferret::Store::FSDirectory.new(dpath, true)
+
+    iw = IndexWriter.new(fs_dir, :create => true, :key => [:id])
+    1000.times do |x|
+      doc = Document.new
+      doc << Field.new('id', x, Field::Store::YES, Field::Index::UNTOKENIZED)
+      iw << doc
+    end
+    iw.close()
+    fs_dir.close()
+
+    @ix = Index.new(:path => dpath, :create => true, :key => [:id])
+  end
+
+  def tear_down()
+    @ix.close
+  end
+
+  def test_repeated_queries_segmentation_fault
+    100000.times do |x|
+      bq = BooleanQuery.new()
+      tq1 = Ferret::Search::TermQuery.new(Ferret::Index::Term.new("id", 1))
+      tq2 = Ferret::Search::TermQuery.new(Ferret::Index::Term.new("another_id", 1))
+      bq.add_query(tq1, BooleanClause::Occur::MUST)
+      bq.add_query(tq2, BooleanClause::Occur::MUST)
+      top_docs = @ix.search(bq)
+    end
+  end
+
+  def test_repeated_queries_bus_error
+    100000.times do |x|
+      bq = BooleanQuery.new()
+      tq1 = TermQuery.new(Term.new("id", 1))
+      tq2 = TermQuery.new(Term.new("another_id", 1))
+      tq3 = TermQuery.new(Term.new("yet_another_id", 1))
+      tq4 = TermQuery.new(Term.new("still_another_id", 1))
+      tq5 = TermQuery.new(Term.new("one_more_id", 1))
+      tq6 = TermQuery.new(Term.new("and_another_id", 1))
+      bq.add_query(tq1, BooleanClause::Occur::MUST)
+      bq.add_query(tq2, BooleanClause::Occur::MUST)
+      bq.add_query(tq3, BooleanClause::Occur::MUST)
+      bq.add_query(tq4, BooleanClause::Occur::MUST)
+      bq.add_query(tq5, BooleanClause::Occur::MUST)
+      bq.add_query(tq6, BooleanClause::Occur::MUST)
+      top_docs = @ix.search(bq)
+    end
+  end
+end
