aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/json.el
diff options
context:
space:
mode:
authorTed Zlatanov2011-10-17 13:40:27 -0400
committerTed Zlatanov2011-10-17 13:40:27 -0400
commit0bc0638017ff5ddcfc4ba2467d7fa2d291583551 (patch)
treef9d25f47929f75ca2f1e2f6263070a5317fb64f5 /lisp/json.el
parentf1bfb0db9821863101364e2369200ca2e545bd31 (diff)
downloademacs-0bc0638017ff5ddcfc4ba2467d7fa2d291583551.tar.gz
emacs-0bc0638017ff5ddcfc4ba2467d7fa2d291583551.zip
* json.el: Bump version to 1.3; (json-alist-p, json-plist-p): Rewrite to avoid recursion.
Diffstat (limited to 'lisp/json.el')
-rw-r--r--lisp/json.el21
1 files changed, 13 insertions, 8 deletions
diff --git a/lisp/json.el b/lisp/json.el
index 47448f4702a..33e985abbee 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2006-2011 Free Software Foundation, Inc. 3;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
4 4
5;; Author: Edward O'Connor <ted@oconnor.cx> 5;; Author: Edward O'Connor <ted@oconnor.cx>
6;; Version: 1.2 6;; Version: 1.3
7;; Keywords: convenience 7;; Keywords: convenience
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -47,6 +47,7 @@
47;; other cleanups, bugfixes, and improvements. 47;; other cleanups, bugfixes, and improvements.
48;; 2006-12-29 - XEmacs support, from Aidan Kehoe <kehoea@parhasard.net>. 48;; 2006-12-29 - XEmacs support, from Aidan Kehoe <kehoea@parhasard.net>.
49;; 2008-02-21 - Installed in GNU Emacs. 49;; 2008-02-21 - Installed in GNU Emacs.
50;; 2011-10-17 - Patch `json-alist-p' and `json-plist-p' to avoid recursion -tzz
50 51
51;;; Code: 52;;; Code:
52 53
@@ -108,16 +109,20 @@ this around your call to `json-read' instead of `setq'ing it.")
108 109
109(defun json-alist-p (list) 110(defun json-alist-p (list)
110 "Non-null if and only if LIST is an alist." 111 "Non-null if and only if LIST is an alist."
111 (or (null list) 112 (while (consp list)
112 (and (consp (car list)) 113 (setq list (if (consp (car list))
113 (json-alist-p (cdr list))))) 114 (cdr list)
115 'not-alist)))
116 (null list))
114 117
115(defun json-plist-p (list) 118(defun json-plist-p (list)
116 "Non-null if and only if LIST is a plist." 119 "Non-null if and only if LIST is a plist."
117 (or (null list) 120 (while (consp list)
118 (and (keywordp (car list)) 121 (setq list (if (and (keywordp (car list))
119 (consp (cdr list)) 122 (consp (cdr list)))
120 (json-plist-p (cddr list))))) 123 (cddr list)
124 'not-plist)))
125 (null list))
121 126
122;; Reader utilities 127;; Reader utilities
123 128