Martin Buchholz <martin(a)xemacs.org> writes:
I can't try to reproduce your crash directly since I don't
have
clearcase, but...your backtrace looks very suggestive, so...
GCPROs are very tricky.
yes, indeed. Maybe Ray could build with DEBUG_GCPRO and then call
show_gcprohist(). It seemed that one gcpro struct in the gcprolist was
pointing to NULL, which shouldn't happen.
- Lisp_Object handler;
+ Lisp_Object handler = Qnil;
out of interest, is this always neccessary? Hm, I guess it is. Maybe
the actual bug is of this kind -- GCPROing an unintialised variable.
/* both of these get set below */
- GCPRO2 (name, default_directory);
+ GCPRO3 (name, default_directory, handler);
CHECK_STRING (name);
@@ -777,9 +777,8 @@
handler = Ffind_file_name_handler (name, Qexpand_file_name);
if (!NILP (handler))
{
- UNGCPRO;
- return call3_check_string (handler, Qexpand_file_name, name,
- default_directory);
+ RETURN_UNGCPRO (call3_check_string (handler, Qexpand_file_name,
+ name, default_directory));
I agree with the RETURN_UNGCPRO but don't think any of this is going
to make a difference. handler should be GCPRO'd by call3().
Gunnar