# # # patch "safe_map.hh" # from [23ba7e1febc922e2640e6ba49493e0617dc4c7bb] # to [ac69dcb8754f37a64495971c20154478e8592634] # # patch "sanity.cc" # from [8c2cb1ec66d4342731bb79f536f50fec2a9c9eca] # to [b15c857413d666964f9f6a1dc1e2a63298b47ed0] # # patch "sanity.hh" # from [9b427a9911acfa147e536fab01cf20febf27778b] # to [13909caa9bed8e38bc4c433f0f9a3e93bef08cfd] # ============================================================ --- safe_map.hh 23ba7e1febc922e2640e6ba49493e0617dc4c7bb +++ safe_map.hh ac69dcb8754f37a64495971c20154478e8592634 @@ -22,7 +22,7 @@ do_safe_erase(T & container, typename T: { if (!container.erase(key)) global_sanity.invariant_failure((F("erasing nonexistent key from %s") - % container_name).str(), + % container_name).str().c_str(), file, line); } #define safe_erase(CONT, KEY) \ @@ -38,7 +38,7 @@ do_safe_insert(T & container, typename T std::pair r = container.insert(val); if (!r.second) global_sanity.invariant_failure((F("inserting duplicate entry into %s") - % container_name).str(), + % container_name).str().c_str(), file, line); return r.first; } @@ -55,7 +55,7 @@ do_safe_get(T & container, typename T::k typename T::const_iterator i = container.find(key); if (i == container.end()) global_sanity.invariant_failure((F("fetching nonexistent entry from %s") - % container_name).str(), + % container_name).str().c_str(), file, line); return i->second; } ============================================================ --- sanity.cc 8c2cb1ec66d4342731bb79f536f50fec2a9c9eca +++ sanity.cc b15c857413d666964f9f6a1dc1e2a63298b47ed0 @@ -210,48 +210,48 @@ void } void -sanity::naughty_failure(string const & expr, i18n_format const & explain, - string const & file, int line) +sanity::naughty_failure(char const * expr, i18n_format const & explain, + char const * file, int line) { string message; log(FL("%s:%d: usage constraint '%s' violated") % file % line % expr, - file.c_str(), line); - prefix_lines_with(_("misuse: "), do_format(explain, file.c_str(), line), message); + file, line); + prefix_lines_with(_("misuse: "), do_format(explain, file, line), message); gasp(); throw informative_failure(message); } void -sanity::error_failure(string const & expr, i18n_format const & explain, - string const & file, int line) +sanity::error_failure(char const * expr, i18n_format const & explain, + char const * file, int line) { string message; log(FL("%s:%d: detected error '%s' violated") % file % line % expr, - file.c_str(), line); - prefix_lines_with(_("error: "), do_format(explain, file.c_str(), line), message); + file, line); + prefix_lines_with(_("error: "), do_format(explain, file, line), message); throw informative_failure(message); } void -sanity::invariant_failure(string const & expr, - string const & file, int line) +sanity::invariant_failure(char const * expr, char const * file, int line) { char const * pattern = N_("%s:%d: invariant '%s' violated"); - log(FL(pattern) % file % line % expr, file.c_str(), line); + log(FL(pattern) % file % line % expr, file, line); gasp(); throw logic_error((F(pattern) % file % line % expr).str()); } void -sanity::index_failure(string const & vec_expr, - string const & idx_expr, +sanity::index_failure(char const * vec_expr, + char const * idx_expr, unsigned long sz, unsigned long idx, - string const & file, int line) + char const * file, int line) { - char const * pattern = N_("%s:%d: index '%s' = %d overflowed vector '%s' with size %d"); + char const * pattern + = N_("%s:%d: index '%s' = %d overflowed vector '%s' with size %d"); log(FL(pattern) % file % line % idx_expr % idx % vec_expr % sz, - file.c_str(), line); + file, line); gasp(); throw logic_error((F(pattern) % file % line % idx_expr % idx % vec_expr % sz).str()); ============================================================ --- sanity.hh 9b427a9911acfa147e536fab01cf20febf27778b +++ sanity.hh 13909caa9bed8e38bc4c433f0f9a3e93bef08cfd @@ -78,17 +78,17 @@ struct sanity { char const * file, int line); void warning(i18n_format const & fmt, char const * file, int line); - NORETURN(void naughty_failure(std::string const & expr, i18n_format const & explain, - std::string const & file, int line)); - NORETURN(void error_failure(std::string const & expr, i18n_format const & explain, - std::string const & file, int line)); - NORETURN(void invariant_failure(std::string const & expr, - std::string const & file, int line)); - NORETURN(void index_failure(std::string const & vec_expr, - std::string const & idx_expr, + NORETURN(void naughty_failure(char const * expr, i18n_format const & explain, + char const * file, int line)); + NORETURN(void error_failure(char const * expr, i18n_format const & explain, + char const * file, int line)); + NORETURN(void invariant_failure(char const * expr, + char const * file, int line)); + NORETURN(void index_failure(char const * vec_expr, + char const * idx_expr, unsigned long sz, unsigned long idx, - std::string const & file, int line)); + char const * file, int line)); void gasp(); private: