From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dan Nicolaescu Newsgroups: gmane.emacs.devel Subject: Problem report #89 Date: Mon, 17 Jul 2006 11:00:41 -0700 Message-ID: <200607171800.k6HI0fKF025716@oogie-boogie.ics.uci.edu> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1153159618 10107 80.91.229.2 (17 Jul 2006 18:06:58 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Mon, 17 Jul 2006 18:06:58 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jul 17 20:06:55 2006 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1G2XSl-0003yt-S5 for ged-emacs-devel@m.gmane.org; Mon, 17 Jul 2006 20:05:00 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1G2XSl-0005QH-7W for ged-emacs-devel@m.gmane.org; Mon, 17 Jul 2006 14:04:59 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1G2XRj-0004DP-Eo for emacs-devel@gnu.org; Mon, 17 Jul 2006 14:03:55 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1G2XRh-0004AB-Vs for emacs-devel@gnu.org; Mon, 17 Jul 2006 14:03:55 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1G2XRh-00049j-D3 for emacs-devel@gnu.org; Mon, 17 Jul 2006 14:03:53 -0400 Original-Received: from [128.195.1.41] (helo=oogie-boogie.ics.uci.edu) by monty-python.gnu.org with esmtp (Exim 4.52) id 1G2XUO-0001Go-Q6 for emacs-devel@gnu.org; Mon, 17 Jul 2006 14:06:41 -0400 Original-Received: from vino.ics.uci.edu (vino.ics.uci.edu [128.195.11.198]) by oogie-boogie.ics.uci.edu (8.13.6/8.13.6) with ESMTP id k6HI0fKF025716 for ; Mon, 17 Jul 2006 11:00:41 -0700 (PDT) Original-To: emacs-devel@gnu.org Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 264 X-ICS-MailScanner: Found to be clean X-ICS-MailScanner-SpamCheck: not spam, SpamAssassin (score=-0.263, required 5, autolearn=disabled, ALL_TRUSTED -1.44, FM_MULTI_ODD2 1.10, TW_GC 0.08) X-ICS-MailScanner-From: dann@vino.ics.uci.edu X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:57208 Archived-At: CID: 89 Checker: UNINIT (help) File: base/src/emacs/src/eval.c Function: Feval Description: Using uninitialized value "val" 2113 DEFUN ("eval", Feval, Seval, 1, 1, 0, 2114 doc: /* Evaluate FORM and return its value. */) 2115 (form) 2116 Lisp_Object form; 2117 { Event var_decl: Declared variable "val" without initializer Also see events: [uninit_use] 2118 Lisp_Object fun, val, original_fun, original_args; 2119 Lisp_Object funcar; 2120 struct backtrace backtrace; 2121 struct gcpro gcpro1, gcpro2, gcpro3; 2122 2123 if (handling_signal) 2124 abort (); 2125 2126 if (SYMBOLP (form)) 2127 return Fsymbol_value (form); 2128 if (!CONSP (form)) 2129 return form; 2130 2131 QUIT; 2132 if ((consing_since_gc > gc_cons_threshold 2133 && consing_since_gc > gc_relative_threshold) 2134 || 2135 (!NILP (Vmemory_full) && consing_since_gc > memory_full_cons_threshold)) 2136 { 2137 GCPRO1 (form); 2138 Fgarbage_collect (); 2139 UNGCPRO; 2140 } 2141 2142 if (++lisp_eval_depth > max_lisp_eval_depth) 2143 { 2144 if (max_lisp_eval_depth < 100) 2145 max_lisp_eval_depth = 100; 2146 if (lisp_eval_depth > max_lisp_eval_depth) 2147 error ("Lisp nesting exceeds `max-lisp-eval-depth'"); 2148 } 2149 2150 original_fun = Fcar (form); 2151 original_args = Fcdr (form); 2152 2153 backtrace.next = backtrace_list; 2154 backtrace_list = &backtrace; 2155 backtrace.function = &original_fun; /* This also protects them from gc */ 2156 backtrace.args = &original_args; 2157 backtrace.nargs = UNEVALLED; 2158 backtrace.evalargs = 1; 2159 backtrace.debug_on_exit = 0; 2160 2161 if (debug_on_next_call) 2162 do_debug_on_call (Qt); 2163 2164 /* At this point, only original_fun and original_args 2165 have values that will be used below */ 2166 retry: 2167 2168 /* Optimize for no indirection. */ 2169 fun = original_fun; At conditional (8): "fun & 7 == 1" taking true path At conditional (9): "fun != Qunbound" taking true path At conditional (10): "(fun = ((0), (fun & -8))->function), (fun & 7 == 1)" taking true path 2170 if (SYMBOLP (fun) && !EQ (fun, Qunbound) 2171 && (fun = XSYMBOL (fun)->function, SYMBOLP (fun))) 2172 fun = indirect_function (fun); 2173 At conditional (1): "((0), (fun & -8))->size & 1073758208 == 1073758208" taking false path At conditional (11): "fun & 7 == 4" taking true path At conditional (12): "((0), (fun & -8))->size & 1073758208 == 1073758208" taking false path 2174 if (SUBRP (fun)) 2175 { 2176 Lisp_Object numargs; 2177 Lisp_Object argvals[8]; 2178 Lisp_Object args_left; 2179 register int i, maxargs; 2180 2181 args_left = original_args; 2182 numargs = Flength (args_left); 2183 2184 CHECK_CONS_LIST (); 2185 2186 if (XINT (numargs) < XSUBR (fun)->min_args || 2187 (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < XINT (numargs))) 2188 Fsignal (Qwrong_number_of_arguments, list2 (original_fun, numargs)); 2189 2190 if (XSUBR (fun)->max_args == UNEVALLED) 2191 { 2192 backtrace.evalargs = 0; 2193 val = (*XSUBR (fun)->function) (args_left); 2194 goto done; 2195 } 2196 2197 if (XSUBR (fun)->max_args == MANY) 2198 { 2199 /* Pass a vector of evaluated arguments */ 2200 Lisp_Object *vals; 2201 register int argnum = 0; 2202 2203 vals = (Lisp_Object *) alloca (XINT (numargs) * sizeof (Lisp_Object)); 2204 2205 GCPRO3 (args_left, fun, fun); 2206 gcpro3.var = vals; 2207 gcpro3.nvars = 0; 2208 2209 while (!NILP (args_left)) 2210 { 2211 vals[argnum++] = Feval (Fcar (args_left)); 2212 args_left = Fcdr (args_left); 2213 gcpro3.nvars = argnum; 2214 } 2215 2216 backtrace.args = vals; 2217 backtrace.nargs = XINT (numargs); 2218 2219 val = (*XSUBR (fun)->function) (XINT (numargs), vals); 2220 UNGCPRO; 2221 goto done; 2222 } 2223 2224 GCPRO3 (args_left, fun, fun); 2225 gcpro3.var = argvals; 2226 gcpro3.nvars = 0; 2227 2228 maxargs = XSUBR (fun)->max_args; 2229 for (i = 0; i < maxargs; args_left = Fcdr (args_left)) 2230 { 2231 argvals[i] = Feval (Fcar (args_left)); 2232 gcpro3.nvars = ++i; 2233 } 2234 2235 UNGCPRO; 2236 2237 backtrace.args = argvals; 2238 backtrace.nargs = XINT (numargs); 2239 2240 switch (i) 2241 { 2242 case 0: 2243 val = (*XSUBR (fun)->function) (); 2244 goto done; 2245 case 1: 2246 val = (*XSUBR (fun)->function) (argvals[0]); 2247 goto done; 2248 case 2: 2249 val = (*XSUBR (fun)->function) (argvals[0], argvals[1]); 2250 goto done; 2251 case 3: 2252 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], 2253 argvals[2]); 2254 goto done; 2255 case 4: 2256 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], 2257 argvals[2], argvals[3]); 2258 goto done; 2259 case 5: 2260 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2261 argvals[3], argvals[4]); 2262 goto done; 2263 case 6: 2264 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2265 argvals[3], argvals[4], argvals[5]); 2266 goto done; 2267 case 7: 2268 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2269 argvals[3], argvals[4], argvals[5], 2270 argvals[6]); 2271 goto done; 2272 2273 case 8: 2274 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2275 argvals[3], argvals[4], argvals[5], 2276 argvals[6], argvals[7]); 2277 goto done; 2278 2279 default: 2280 /* Someone has created a subr that takes more arguments than 2281 is supported by this code. We need to either rewrite the 2282 subr to use a different argument protocol, or add more 2283 cases to this switch. */ 2284 abort (); 2285 } 2286 } At conditional (2): "fun & 7 == 4" taking true path At conditional (3): "((0), (fun & -8))->size & 1073743872 == 1073743872" taking false path At conditional (13): "fun & 7 == 4" taking true path At conditional (14): "((0), (fun & -8))->size & 1073743872 == 1073743872" taking false path 2287 if (COMPILEDP (fun)) 2288 val = apply_lambda (fun, original_args, 1); 2289 else 2290 { At conditional (4): "fun == Qunbound" taking true path At conditional (15): "fun == Qunbound" taking true path 2291 if (EQ (fun, Qunbound)) 2292 Fsignal (Qvoid_function, Fcons (original_fun, Qnil)); At conditional (5): "fun & 7 != 5" taking true path At conditional (16): "fun & 7 != 5" taking true path 2293 if (!CONSP (fun)) 2294 Fsignal (Qinvalid_function, Fcons (original_fun, Qnil)); 2295 funcar = Fcar (fun); At conditional (6): "funcar & 7 != 1" taking true path At conditional (17): "funcar & 7 != 1" taking true path 2296 if (!SYMBOLP (funcar)) 2297 Fsignal (Qinvalid_function, Fcons (original_fun, Qnil)); At conditional (7): "funcar == Qautoload" taking true path At conditional (18): "funcar == Qautoload" taking false path 2298 if (EQ (funcar, Qautoload)) 2299 { 2300 do_autoload (fun, original_fun); 2301 goto retry; 2302 } At conditional (19): "funcar == Qmacro" taking false path 2303 if (EQ (funcar, Qmacro)) 2304 val = Feval (apply1 (Fcdr (fun), original_args)); At conditional (20): "funcar == Qlambda" taking false path 2305 else if (EQ (funcar, Qlambda)) 2306 val = apply_lambda (fun, original_args, 1); 2307 else 2308 Fsignal (Qinvalid_function, Fcons (original_fun, Qnil)); 2309 } 2310 done: 2311 CHECK_CONS_LIST (); 2312 2313 lisp_eval_depth--; At conditional (21): "(backtrace).debug_on_exit != 0" taking false path 2314 if (backtrace.debug_on_exit) 2315 val = call_debugger (Fcons (Qexit, Fcons (val, Qnil))); 2316 backtrace_list = backtrace.next; 2317 Event uninit_use: Using uninitialized value "val" Also see events: [var_decl] 2318 return val; 2319 }