]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/registry/tc.rb
db adaptors: nil internal variable when closing
[user/henk/code/ruby/rbot.git] / lib / rbot / registry / tc.rb
index 4477c1158b9ae03be7a7748c2f5ab79d7d142b8c..06013f8f796749aa2f2e751a1a179c6208218393 100644 (file)
@@ -117,15 +117,19 @@ module Irc
       if absfilename && File.exist?(key)
         # db already exists, use it
         @db = DBTree.open_db(key)
+        @fname = key.dup
       elsif absfilename
         # create empty db
         @db = DBTree.create_db(key)
+        @fname = key.dup
       elsif File.exist? relfilename
         # db already exists, use it
         @db = DBTree.open_db relfilename
+        @fname = relfilename.dup
       else
         # create empty db
         @db = DBTree.create_db relfilename
+        @fname = relfilename.dup
       end
       oldbasename = (absfilename ? key : relfilename).gsub(/\.tdb$/, ".db")
       if File.exists? oldbasename and defined? BDB
@@ -155,6 +159,14 @@ module Irc
       @@bot_registries.clear
     end
 
+    def close
+      db = @@bot_registries.delete(@fname)
+      if db != @db
+        error "We think we have #{@db} from #{@fname}, TC pseudo-env gives us #{db}"
+      end
+      @db.close
+    end
+
     def DBTree.create_db(name)
       debug "DBTree: creating empty db #{name}"
       if @@bot_registries.key? name
@@ -364,6 +376,7 @@ class Bot
       # debug "closing registry #{registry}"
       return if !@registry
       registry.close
+      @registry = nil
     end
 
     # convert value to string form for storing in the registry