Huidae Cho wrote: > G_add_error_handler is a good way to do a cleanup,
I had actually forgetten about the existence of this. > But again, when they call fatal error internally, they don't have pointers > to maps. It would be great if we could keep track of opened raster/vector > maps and properly close existing maps and delete unfinished new maps inside > G_fatal_error. And use G_add_error_handler to do a non-map related cleanup. Right. Anything related to raster maps is available through the R__ structure in lib/raster (R.h, init.c). R__.fileinfo is an array of "fileinfo" structures, with R__.fileinfo_count elements. The open_mode field of each structure will be -1 for unused slots, or one of the OPEN_* constants (1, 2, or 3) for an open map. We might want an OPEN_INCOMPLETE value for maps which are in the process of being opened; this would only be relevant for handling clean-up for fatal errors from within Rast_open_*. I'm not that familiar with the vector library, but it looks like everything relating to a map is stored in a Map_info structure which is passed in by the caller. There's no global table of vector maps, right? If so, I suggest changing that, however invasive it may be. I'd certainly suggest holding off on any 7.0 release until that's resolved. -- Glynn Clements <[email protected]> _______________________________________________ grass-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-dev
