"Stephen J. Turnbull" wrote:
 
 >>>>> "Markus" == Markus Alt <altmark(a)de.ibm.com> writes:
 
     Markus> I also get that error Giacomo described with 21.5.12, but
     Markus> not with 21.4.12 where the value of w3-configuration-data
     Markus> is exactly the same.
 
     Markus> However, my backtrace is a bit different:
 
     Markus> Signaling: (wrong-type-argument integerp nil)
     Markus>   w3-configuration-data(datadir)
 
 This is due to my patch which clears the match data unconditionally on
 preparing every search.  The function `w3-configuration-data' depends
 on match data persisting if the search fails.  I will revert the
 change soon, but I'm undecided as to exactly how to do that (the patch
 fixed a couple of bugs en passant).
 
 The following version of `w3-configuration-data' is NOT ROBUST, but
 will work with the XEmacs package distribution of w3.el.
 
 (defun w3-configuration-data (option &optional default)
   (warn "Crocked version of `w3-configuration-data' was used!")
   (let ((info (or (cdr-safe (assq option w3-configuration-data)) default)))
     (if (not (stringp info))
  (setq info (eval info)))
     (while (string-match "\\$[({]\\([^{(]+\\)[})]" info)
       (setq info (concat (substring info 0 (match-beginning 0))
                          ;; CROCK! KLUDGE! Oh, the shame!  Don't look!
                          (save-match-data
                           (w3-configuration-data (intern (match-string 1
        info))
        ""))
     (substring info (match-end 0)))))
     info)) 
Works around the error for me. Thanks, Stephen!
-- 
Markus Alt
IBM Lab Boeblingen, Germany
altmark(a)de.ibm.com