From: Richard M. Stallman Date: Fri, 9 Apr 1999 19:21:52 +0000 (+0000) Subject: (do_autoload): Preserve match data. X-Git-Tag: emacs-20.4~344 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f87740dccbc3b62d5a588dba5cdf5eff2a00d2f0;p=emacs.git (do_autoload): Preserve match data. --- diff --git a/src/eval.c b/src/eval.c index 6d9c0ed809c..b9a89374236 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1649,12 +1649,15 @@ do_autoload (fundef, funname) CHECK_SYMBOL (funname, 0); GCPRO3 (fun, funname, fundef); - /* Value saved here is to be restored into Vautoload_queue */ + /* Preserve the match data. */ + record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); + + /* Value saved here is to be restored into Vautoload_queue. */ record_unwind_protect (un_autoload, Vautoload_queue); Vautoload_queue = Qt; Fload (Fcar (Fcdr (fundef)), Qnil, noninteractive ? Qt : Qnil, Qnil, Qt); - /* Save the old autoloads, in case we ever do an unload. */ + /* Save the old autoloads, in case we ever do an unload. */ queue = Vautoload_queue; while (CONSP (queue)) { @@ -1664,7 +1667,7 @@ do_autoload (fundef, funname) /* Note: This test is subtle. The cdr of an autoload-queue entry may be an atom if the autoload entry was generated by a defalias - or fset. */ + or fset. */ if (CONSP (second)) Fput (first, Qautoload, (Fcdr (second)));