Subject: culprit found

From: [email-masked]
Date: Mon, 04 Jul 2011 19:14:30 -0700

I think the infinite loop problem that I reported was introduced by
revision 104853 shown below.

=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog	2011-07-01 13:37:00 +0000
+++ lisp/ChangeLog	2011-07-01 16:41:02 +0000
@@ -1,3 +1,8 @@
+2011-07-01  Stefan Monnier  <[email-masked]>
+
+	* emacs-lisp/derived.el (define-derived-mode): Make abbrev-table
+	inherit from parent.
+
 2011-07-01  Lars Magne Ingebrigtsen  <[email-masked]>
 
 	* dired-aux.el (dired-diff): Doc fixup (bug#8816).

=== modified file 'lisp/emacs-lisp/derived.el'
--- lisp/emacs-lisp/derived.el	2011-03-22 20:58:27 +0000
+++ lisp/emacs-lisp/derived.el	2011-07-01 16:41:02 +0000
@@ -253,8 +253,11 @@
 		   `(let ((parent (char-table-parent ,syntax)))
 		      (unless (and parent
 				   (not (eq parent (standard-syntax-table))))
-			(set-char-table-parent ,syntax (syntax-table)))))))
-
+			(set-char-table-parent ,syntax (syntax-table)))))
+                ,(when declare-abbrev
+                   `(unless (abbrev-table-get ,abbrev :parents)
+                      (abbrev-table-put ,abbrev :parents
+                                        (list local-abbrev-table))))))
 	  (use-local-map ,map)
 	  ,(when syntax `(set-syntax-table ,syntax))
 	  ,(when abbrev `(setq local-abbrev-table ,abbrev))