Prevent an args-out-of-range error during login/out
[riece] / lisp / riece-user.el
index 9ad4ee1..9daf51a 100644 (file)
@@ -1,4 +1,4 @@
-;;; riece-user.el --- a user object
+;;; riece-user.el --- a user object -*- lexical-binding: t -*-
 ;; Copyright (C) 1998-2003 Daiki Ueno
 
 ;; Author: Daiki Ueno <ueno@unixuser.org>
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Code:
 
 (require 'riece-identity)
 (require 'riece-mode)
+(require 'riece-cache)
 
 ;;; User object:
 (defun riece-find-user (name)
   "Get a user object named NAME from the server buffer."
+  (riece-cache-get riece-user-cache name)
   (let ((symbol (intern-soft (riece-identity-canonicalize-prefix name)
                             riece-user-obarray)))
-     (if symbol
-        (symbol-value symbol))))
+    (if symbol
+       (symbol-value symbol))))
 
 (defun riece-forget-user (name)
+  (riece-cache-delete riece-user-cache name)
   (let ((symbol (intern-soft (riece-identity-canonicalize-prefix name))))
     (when symbol
       (makunbound symbol)
       (unintern (symbol-name symbol) riece-user-obarray))))
 
 (defun riece-rename-user (old-name new-name)
+  (riece-cache-delete riece-user-cache old-name)
+  (riece-cache-set riece-user-cache new-name new-name)
   (unless (equal (riece-identity-canonicalize-prefix old-name)
                 (riece-identity-canonicalize-prefix new-name))
     (let ((symbol (intern-soft (riece-identity-canonicalize-prefix old-name)
@@ -62,7 +67,10 @@ away status, respectively."
   (let ((symbol (intern-soft (riece-identity-canonicalize-prefix name)
                             riece-user-obarray)))
      (if symbol
-        (symbol-value symbol)
+        (progn
+          (riece-cache-get riece-user-cache name)
+          (symbol-value symbol))
+       (riece-cache-set riece-user-cache name name)
        (set (intern (riece-identity-canonicalize-prefix name)
                    riece-user-obarray)
            (riece-make-user nil nil nil nil nil)))))