@@ -150,7 +150,13 @@ class _LIBCPP_HIDDEN locale::__imp : public facet {
150150 void install (facet* f, long id);
151151 template <class F >
152152 void install (F* f) {
153- install (f, f->id .__get ());
153+ std::fprintf (stderr, " Entering install(Facet*)\n " );
154+
155+ std::fprintf (stderr, " Getting id for locale\n " );
156+ long id = f->id .__get ();
157+
158+ std::fprintf (stderr, " Calling install(Facet*, long id)\n " );
159+ install (f, id);
154160 }
155161 template <class F >
156162 void install_from (const __imp& other);
@@ -231,8 +237,13 @@ locale::__imp::__imp(const string& name, size_t refs) : facet(refs), facets_(N),
231237 if (facets_[i])
232238 facets_[i]->__add_shared ();
233239
234- std::fprintf (stderr, " Installing locales\n " );
235- install (new collate_byname<char >(name_));
240+ {
241+ std::fprintf (stderr, " Creating collate_byname<char>\n " );
242+ auto * byname = new collate_byname<char >(name_);
243+
244+ std::fprintf (stderr, " Installing collate_byname<char>\n " );
245+ install (byname);
246+ }
236247#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
237248 install (new collate_byname<wchar_t >(name_));
238249#endif
@@ -480,12 +491,25 @@ locale::__imp::~__imp() {
480491}
481492
482493void locale::__imp::install (facet* f, long id) {
494+ std::fprintf (stderr, " Entering install(facet*, long id)\n " );
495+
496+ std::fprintf (stderr, " Calling facet->__add_shared()\n " );
483497 f->__add_shared ();
498+
499+ std::fprintf (stderr, " Creating unique_ptr to hold facet\n " );
484500 unique_ptr<facet, releaser> hold (f);
485- if (static_cast <size_t >(id) >= facets_.size ())
501+
502+ if (static_cast <size_t >(id) >= facets_.size ()) {
503+ std::fprintf (stderr, " Resizing facets vector\n " );
486504 facets_.resize (static_cast <size_t >(id + 1 ));
487- if (facets_[static_cast <size_t >(id)])
505+ }
506+
507+ if (facets_[static_cast <size_t >(id)]) {
508+ std::fprintf (stderr, " Releasing facets[id]\n " );
488509 facets_[static_cast <size_t >(id)]->__release_shared ();
510+ }
511+
512+ std::fprintf (stderr, " Releasing unique_ptr\n " );
489513 facets_[static_cast <size_t >(id)] = hold.release ();
490514}
491515
0 commit comments