+ (let* ((key (ew-cons* field-name field-body eword-filter
+ (ew-dynamic-options)))
+ (tmp (assoc key ew-decode-field-cache-buf)))
+ (if tmp
+ (cdr tmp)
+ (progn
+ (setq tmp (nthcdr ew-decode-field-cache-num
+ ew-decode-field-cache-buf))
+ (if (cdr tmp)
+ (progn
+ (setcdr (cdr tmp) ew-decode-field-cache-buf)
+ (setq ew-decode-field-cache-buf (cdr tmp))
+ (setcdr tmp nil))
+ (setq ew-decode-field-cache-buf
+ (cons (cons nil nil)
+ ew-decode-field-cache-buf)))
+ (setcar (car ew-decode-field-cache-buf) key)
+ (setcdr (car ew-decode-field-cache-buf)
+ (ew-decode-field-no-cache
+ field-name field-body eword-filter))
+ (cdar ew-decode-field-cache-buf)))))
+
+(defun ew-decode-field-no-cache (field-name field-body &optional eword-filter)
+ "No caching version of ew-decode-field."
+ (let ((tmp (assq (intern (downcase field-name)) ew-decode-field-syntax-alist))