Hi Jakub, >> Also - Tom and Pedro have raised the issue that the patch introduces >> a new static variable to the library that is not thread safe. I am >> not sure of the best way to address this problem. Possibly the >> variable could be made thread local ? Are there any other static > > Please don't.
OK. :-) > Most of the demangler functions pass around a pointer to a struct with > context, can't this be added in there? Not without modifying the current demangling interface. The problem is that the context structure is created for each invocation of a demangling function (from outside the library), and no state is preserved across demangling calls. Thus in order to have a recursion limit which is configurable by the caller, you either need to have a global variable or else extend the demangling interface to include a recursion limit parameter. I did consider just having a fixed limit, that the user cannot change, but I thought that this might be rejected by reviewers. (On the grounds that different limits are appropriate to different execution environments). Note - enabling or disabling the recursion limit is controlled by a separate feature of the proposed patch, ie the new DMGL_RECURSE_LIMIT flag in the options field of the cplus_demangleXXX() functions. But there is not enough room in the options field to also include a recursion limit value. Cheers Nick