|Subject:||Re: 23.0.60; Seg fault in xfaces.c at line 6703 (Emacs.app on GNUstep)|
|Date:||Mon, 04 Feb 2008 00:32:24 -1000|
|User-agent:||GNUMail (Version 1.2.0)|
With the patch I supplied, at least the user knows there is an issue with realizing the default face, rather than SIGSEGV (11).
Since this is a programming error in an internal structure, in a development version of the code, it is letting the developer know there is an error. Developers have debuggers, they don't need code to catch bugs and exit gracefully. To write code to catch every potential NULL pointer exception in the internal structures would make Emacs bloated and slow.
Thanks, but I think I already pretty much understood that. If I may quote myself:
I am aware that sometimes some classes of errors are perhaps best allowed to happen and to result in catastrophic failures like segmentation faults,
From an uninitiated point of view, I saw an attempt to reference a member of an uninitialized structure, while in the process of initializing, as you point out, a development version of the program.
Based on the program's subsequent behavior, this structure is clearly *required* to be properly initialized in order to successfully realize a face, during the first call to 'Fdisplay_supports_face_attributes_p'.
Further, the struct in question is called 'face_cache', which suggests to me that once one has realized a face, one can cache a reference to it in this struct. And further suggests to me that before realizing a face, one would have no need of a cache, so why go to the trouble of initializing it, if one wasn't yet sure whether a face even *could* be realized? (Never mind *requiring* it to be initialized.)
Yet this struct clearly needs to be properly initialized as a necessary prerequisite of realizing a face.
Maybe this is part of some sort of optimization, i.e., by delaying attempting to realize a face until the first time someone asks if the display supports face attributes? Or am I perhaps misinterpreting the name/purpose of the struct?
TIA, Chris Hall
|[Prev in Thread]||Current Thread||[Next in Thread]|